我在 localhost 上运行了一个简单的 php 脚本,它设置过期日期,如下所示:
// current date is **Tue, 17 Sep 2013**
header(
'Expires: Sat, 22 Sep 2013 03:53:08 GMT');
}
echo "Original content";
echo ( '<a href="'.$_SERVER['PHP_SELF'].'">View Again</a><br />' );
// echo "Content changed still visible though I set expire date already!";
保存此内容并首次加载内容后,我删除第二条注释,该注释打印出一个新行并点击再次查看按钮。但是显示第一个缓存的内容(只有一行“原始内容”),它仍然显示添加的第二行。
我是否误解了这个剧本的某些内容或出了什么问题?
答案 0 :(得分:0)
尝试在Cache-Control: public
标题之前添加Expires: ...
:
header('Cache-Control: public');
header('Expires: Sat, 22 Sep 2013 03:53:08 GMT');
echo "Original content: " . date('d.m.Y H:i:s');
echo '<a href="', $_SERVER['PHP_SELF'], '">View Again</a>';
<强> UPDv1:强>
另一种选择是$_SERVER['HTTP_IF_MODIFIED_SINCE']
检查isset()
。如果存在,则解析它并与到期日期进行比较。如果它较小,则强制脚本将HTTP 304作为响应头返回:
header('Last-Modified: ' . /* expiration date there -> */ gmdate('D, d M Y H:i:s') . ' GMT', true, 304);
它将强制浏览器使用已加载页面的缓存副本。