0

我有以下 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 标头,但这不应该是必需的)

谢谢

4

1 回答 1

1

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

附带说明一下,如果 php 页面正在使用会话,则 session.cache.limiter 也会影响缓存。

于 2012-09-19T11:51:22.390 回答