【发布时间】:2012-09-17 14:04:54
【问题描述】:
我有以下 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 标头,但这不是必需的)
谢谢
【问题讨论】:
-
使用 Apache 的
mod_expires处理Cache-control和Expires标头。 -
我可能不是 100% 正确,但这会在您每次访问页面时设置过期标头,从而无限期保留缓存版本
-
@webbandit:想详细说明一下吗?我尝试设置 ExpiresByType 文本/html“访问加 1 年”,但浏览器(铬和火狐)仍然总是点击脚本并获得 200,尽管响应标头包含“Cache-Control:max-age= 31536000, public" 我用 ExpiresByType 设置(顺便说一句,它适用于其他文件类型,文本/css 等)
标签: php apache browser-cache cache-control