浏览器的"F5"和"Ctrl + F5"刷新会产生哪些请求?
P粉593649715
P粉593649715 2023-10-11 10:38:51
0
2
666

F5Ctrl+F5 在网络浏览器中触发的操作是否有标准?

我曾经在IE6和Firefox 2.x中做过实验。 F5 刷新将触发发送到服务器的 HTTP 请求,其中包含 If-Modified-Since 标头,而 Ctrl+F5 则不会有这样一个标题。根据我的理解, F5 将尝试尽可能多地利用缓存内容,而 Ctrl+F5 旨在放弃所有缓存内容,只是再次从服务器检索所有内容。

但是今天,我注意到在一些最新的浏览器(Chrome、IE8)中它不再以这种方式工作。 F5Ctrl+F5 都会发送 If-Modified-Since 标头。

那么这应该如何工作,或者(如果没有标准)主要浏览器在实现这些刷新功能方面有何不同?

P粉593649715
P粉593649715

全部回复(2)
P粉665679053

这取决于浏览器,但它们的行为方式相似。

F5 通常仅在页面被修改时更新页面。现代浏览器发送 Cache-Control: max-age=0 来告诉任何缓存资源被视为新鲜的最长时间(相对于请求时间)。

CTRL-F5 用于强制更新,忽略任何缓存。现代浏览器发送 Cache-Control: no-cachePragma: No-cache

如果我没记错的话,Netscape 是第一个通过在按下 CTRL 时添加 Pragma: No-cache 来添加缓存控制支持的浏览器 -F5。

┌───────────┬──────────────┬─────┬─────────────────┬──────────────────────────────┐
│ Version 4 │      F5      │  R  │      CLICK      │ Legend:                      │
│2021 MAY 19├──┬──┬──┬──┬──┼──┬──┼──┬──┬──┬──┬──┬──┤ C = Cache-Control: no-cache  │
│           │  │S │C │A │A │C │C │  │S │C │A │A │C │ I = If-Modified-Since        │
│           │  │H │T │L │L │T │T │  │H │T │L │L │T │ M = Cache-Control: max-age=0 │
│           │  │I │R │T │T │R │R │  │I │R │T │T │R │ N = Not tested               │
│           │  │F │L │  │G │L │L │  │F │L │  │G │L │ P = Pragma: No-cache         │
│           │  │T │  │  │R │  │+ │  │T │  │  │R │+ │ - = ignored                  │
│           │  │  │  │  │  │  │S │  │  │  │  │  │S │                              │
│           │  │  │  │  │  │  │H │  │  │  │  │  │H │ With 'CLICK' I refer to a    │
│           │  │  │  │  │  │  │I │  │  │  │  │  │I │ mouse click on the browsers  │
│           │  │  │  │  │  │  │F │  │  │  │  │  │F │ refresh-icon.                │
│           │  │  │  │  │  │  │T │  │  │  │  │  │T │                              │
│           │  │  │  │  │  │  │  │  │  │  │  │  │  │ 1: Version 3.0.6 sends I     │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    and C, but 3.1.6 opens    │
│Brave 1.24 │M │CP│CP│- │- │M │CP│M │CP│CP│M │CP│CP│    the page in a new tab,    │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    making a normal request   │
│Chrome 1   │MI│MI│MI│- │- │MI│- │MI│MI│MI│MI│MI│N │    with only I.              │
│Chrome 6   │MI│CP│CP│- │- │MI│CP│MI│CP│CP│MI│- │N │ 2: Version 10.62 does        │
│Chrome 90  │M │CP│CP│- │- │M │CP│M │CP│CP│M │CP│CP│    nothing. 9.61 might do C  │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    unless it was a typo in   │
│Edge 90    │M │CP│CP│- │- │M │CP│M │CP│CP│M │CP│CP│    my old table.             │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤ 3: Opens the currernt tab in │
│Firefox 3.x│MI│- │CP│- │- │MI│CP│MI│CP│1 │M │MI│N │    a new tab, but does not   │
│Firefox 89 │M │- │CP│- │M │M │CP│M │CP│3 │M │M │3 │    refresh the page if it is │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    cached in the browser.    │
│MSIE 8, 7  │I │- │C │- │I │I │  │I │I │C │I │I │N │                              │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤                              │
│Opera 10, 9│C │- │- │2 │- │C │- │C │C │C │C │- │N │                              │
│Opera 76   │M │CP│CP│- │- │M │- │M │CP│CP│M │CP│CP│                              │
├───────────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──────────────────────────────┤
│                    https://stackoverflow.com/a/385491/36866                     │
└─────────────────────────────────────────────────────────────────────────────────┘

有关 Chrome 6.0.472 的注意事项:如果您执行强制重新加载(例如 CTRL-F5),则其行为就像 URL 在内部一样标记为始终强制重新加载。如果您转到地址栏并按 Enter 键,该标志将被清除。

P粉675258598

一般来说:

即使内容发生更改,

F5 也可能会为您提供相同的页面,因为它可能会从缓存加载页面。但是 Ctrl+F5 会强制刷新缓存,并保证如果内容发生更改,您将获得新内容。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板