php set header过期日期不起作用

时间:2013-09-17 04:00:22

标签: php caching

我在 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!";

保存此内容并首次加载内容后,我删除第二条注释,该注释打印出一个新行并点击再次查看按钮。但是显示第一个缓存的内容(只有一行“原始内容”),它仍然显示添加的第二行。

我是否误解了这个剧本的某些内容或出了什么问题?

1 个答案:

答案 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);

它将强制浏览器使用已加载页面的缓存副本。