apache静态资源配置核心是分类型设过期时间、补强cache-control、验证响应头是否生效;需启用mod_expires和mod_headers模块,按mime类型配置expiresbytype和header指令,并通过devtools验证响应头。

Apache 静态资源配置,核心是让浏览器高效加载、复用图片、CSS、JS 等文件,同时避免缓存动态内容。不靠猜、不堆规则,关键就三点:分类型设过期时间、补强 Cache-Control、验证响应头是否真生效。
启用必要模块
先确认 mod_expires 和 mod_headers 已加载:
- 运行
apachectl -M | grep -E 'expires|headers',看到expires_module和headers_module(shared)才表示就绪 - 若缺失,在
httpd.conf或apache2.conf中取消注释这两行:LoadModule expires_module modules/mod_expires.soLoadModule headers_module modules/mod_headers.so - 改完执行
apachectl -t检查语法,再重启服务
按 MIME 类型设缓存时长
比按后缀更准——它看实际返回的 Content-Type,不会因重写或别名失效:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 图片类:
ExpiresByType image/jpeg "access plus 1 year"(同理配 png/webp/gif/ico) - CSS 与 JS:
ExpiresByType text/css "access plus 1 month",ExpiresByType application/javascript "access plus 1 month" - 字体与 WASM:
ExpiresByType font/woff2 "access plus 1 year",ExpiresByType application/wasm "access plus 1 week" - HTML/JSON/XML 等动态内容:
ExpiresByType text/html "access plus 0 seconds",ExpiresByType application/json "access plus 0 seconds" - 兜底防漏:
ExpiresDefault "access plus 0 seconds"
补上 Cache-Control 提升兼容性
现代浏览器优先信任 Cache-Control,仅设 Expires 不够:
- 对带哈希的 JS/CSS(如
app.a1b2c3.js)加immutable:Header set Cache-Control "public, immutable, max-age=31536000" - 对图片、字体等长效资源:
Header set Cache-Control "public, max-age=31536000" - 对 HTML 或 API 返回:
Header set Cache-Control "no-cache, no-store, must-revalidate"
验证是否真正起作用
别只信配置,要看真实响应头:
- 打开 Chrome DevTools → Network → 刷新页面
- 点开一个
.js或.png文件,检查 Response Headers - 必须同时看到:
Expires: Tue, 22 Jul 2027 00:00:00 GMTCache-Control: public, immutable, max-age=31536000 - 如果只有
Last-Modified或ETag,说明缓存头没发出来,回查模块和配置位置










