设置 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");