设置 HTTP 缓存头
2. 适用于不同资源的缓存策略
(1) 长期缓存的静态资源(JS/CSS/图片)
// 适用于带哈希的文件名(如 style.a1b2c3.css) header("Cache-Control: public, max-age=31536000, immutable"); // 缓存 1 年
(2) 动态内容(HTML/API 响应)
// 禁止缓存(如用户个人数据)
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
public
:允许代理服务器(如 CDN)缓存资源。max-age=360000
:缓存 100 小时(≈4.17 天)。immutable
(可选):告诉浏览器资源不会变,避免重新验证(适用于哈希命名的文件)。
最佳实践总结
资源类型 | 推荐 Cache-Control 设置 |
---|---|
静态资源(JS/CSS/图片) | public, max-age=31536000, immutable |
HTML 文件 | no-cache, must-revalidate |
API 响应(动态数据) | no-store, no-cache, must-revalidate |
最终优化后的 PHP 代码
// 静态资源(如 style.a1b2c3.css) ---- 缓存 1 年 header("Cache-Control: public, max-age=31536000, immutable");
// 旧版 HTTP/1.0 缓存头(与 Cache-Control 共存) header("Expires: " . gmdate("D, d M Y H:i:s", time() + 31536000) . " GMT"); // 动态内容(如 index.php) header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache");
发表评论 取消回复