F5 和 Ctrl+F5 在网络浏览器中触发的操作是否有标准?
我曾经在IE6和Firefox 2.x中做过实验。 F5 刷新将触发发送到服务器的 HTTP 请求,其中包含 If-Modified-Since
标头,而 Ctrl+F5 则不会有这样一个标题。根据我的理解, F5 将尝试尽可能多地利用缓存内容,而 Ctrl+F5 旨在放弃所有缓存内容,只是再次从服务器检索所有内容。
但是今天,我注意到在一些最新的浏览器(Chrome、IE8)中它不再以这种方式工作。 F5 和 Ctrl+F5 都会发送 If-Modified-Since
标头。
那么这应该如何工作,或者(如果没有标准)主要浏览器在实现这些刷新功能方面有何不同?
这取决于浏览器,但它们的行为方式相似。
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 会强制刷新缓存,并保证如果内容发生更改,您将获得新内容。