Riz*_*rif 6 cache-control browser-cache
我有这个脚本
<?php
header("Expires: Sat, 11 Jun 2011 00:00:00 GMT");
echo "Hello World";
?>
Run Code Online (Sandbox Code Playgroud)
它只写"Hello World"并将缓存设置为在下周六到期.
现在,当我在FireFox中加载此页面并单击重新加载按钮时,它向服务器发出新请求以加载页面而不是仅从缓存中提供它(我认为确保是否last-modified仍然有效).
但是,如果我将光标放在地址栏上并按下Enter,FireFox将从缓存中提供内容.
为什么会这样?为什么在第一种情况下(重新加载)它向服务器发出请求,但在第二种情况下(刷新,我猜?)它从缓存服务?
Abe*_*ker 19
我认为术语"刷新"和"重新加载"基本上是同义词.我在RFC 2616中看到这一行描述了HTTP/1.1缓存,它提供了一个可能的细微差别:
到期时间不能用于强制用户代理刷新其显示或重新加载资源
换句话说,也许您可以说刷新用于显示,而重新加载用于资源.但是,由于浏览器主要用于显示资源,我看不出有什么区别.
以下是处理浏览器缓存控制的开发人员对条款的简短描述.他喜欢的条款是:
(硬重新加载迫使浏览器绕过其缓存.对于Firefox,你按住Shift并按下重新加载按钮.维基百科有一个如何为常见浏览器执行此操作的列表.您可以在此页面上测试其效果.)
要回答有关Firefox如何决定何时刷新的问题,以下是上述链接解释的方法:
If-Modified-Since和Cache-Control: max-age=0标头(304 Not Modified如果适用)Pragma: no-cache和Cache-Control: no-cache标头,并将绕过缓存