明确缓存客户端的PHP页面

时间:2012-09-17 14:04:55

标签: php apache browser-cache cache-control

我有以下PHP脚本(比如cache.php):

<?php
 Header("Cache-Control: public");

 $offset = 60 * 60 * 24 * 3;
 $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
 Header($ExpStr);

 echo "Hello world";
?>

据我了解,这应该使浏览器在第一次访问它时存储其输出的缓存版本,然后在接下来的3天内提供此版本,甚至不向服务器发送请求。不幸的是,情况并非如此(使用apache 2.2),有没有人有任何有用的见解? (显然我可以在PHP脚本中强制使用304标头,但这不应该是必需的)

由于

1 个答案:

答案 0 :(得分:1)

看来我的错是通过按F5来检查是否发生了缓存,F5(与图像,css等其他资源不同)显式从服务器获取新条目,而不是呈现存储的条目。为了检查缓存,应该保留指向相关页面的链接(在不同的页面上),并且只检查缓存页面是否通过单击来提供。

作为旁注,如果php页面正在使用会话,session.cache.limiter也会影响缓存。