2

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

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

我是不是误解了什么或者这个脚本出了什么问题?

4

1 回答 1

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

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

于 2013-09-17T04:15:36.583 回答