F5 und Strg+F5 in Webbrowsern auslösen?
Ich habe Experimente in IE6 und Firefox 2.x durchgeführt. Eine F5-Aktualisierung löst eine HTTP-Anfrage an den Server aus, die einen If-Modified-Since
-Header enthält, während Strg+F5 keinen solchen Header hat. Soweit ich weiß, wird F5 versuchen, so viel wie möglich vom zwischengespeicherten Inhalt zu nutzen, während Strg+F5 darauf abzielt, alle zwischengespeicherten Inhalte zu verwerfen und einfach alles wieder vom Server abzurufen.
Aber heute ist mir aufgefallen, dass es in einigen der neuesten Browser (Chrome, IE8) nicht mehr so funktioniert. F5 und Strg+F5 senden beide den If-Modified-Since
-Header.
Wie soll das also funktionieren, oder (wenn es keinen Standard gibt) wie unterscheiden sich die großen Browser darin, wie sie diese Aktualisierungsfunktionen implementieren?
这取决于浏览器,但它们的行为方式相似。
F5 通常仅在页面被修改时更新页面。现代浏览器发送
Cache-Control: max-age=0
来告诉任何缓存资源被视为新鲜的最长时间(相对于请求时间)。CTRL-F5 用于强制更新,忽略任何缓存。现代浏览器发送
Cache-Control: no-cache
和Pragma: No-cache
如果我没记错的话,Netscape 是第一个通过在按下 CTRL 时添加
Pragma: No-cache
来添加缓存控制支持的浏览器 -F5。有关 Chrome 6.0.472 的注意事项:如果您执行强制重新加载(例如 CTRL-F5),则其行为就像 URL 在内部一样标记为始终强制重新加载。如果您转到地址栏并按 Enter 键,该标志将被清除。
一般来说:
即使内容发生更改,F5 也可能会为您提供相同的页面,因为它可能会从缓存加载页面。但是 Ctrl+F5 会强制刷新缓存,并保证如果内容发生更改,您将获得新内容。