apache mod_expires通过按mime类型精准设置expiresbytype(如图片1年、css/js1个月)、禁用动态内容缓存、配合mod_headers补充cache-control与immutable,实现浏览器端高效强缓存。

直接在 Apache 配置文件(如 httpd.conf 或虚拟主机配置)中启用 mod_expires,按 MIME 类型设定明确、分层的过期策略,就能让浏览器对特定静态文件做强缓存。关键不是“统一设长”,而是“精准匹配类型 + 禁用动态内容 + 补充 Cache-Control”。
确认并启用 mod_expires 模块
先确保模块已加载:
- 运行
apachectl -M | grep expires,看到expires_module (shared)表示就绪 - 若未启用,在主配置中取消注释:
LoadModule expires_module modules/mod_expires.so - 同时建议启用
mod_headers(用于补充 Cache-Control):LoadModule headers_module modules/mod_headers.so
按 MIME 类型设置强缓存时间
使用 ExpiresByType 比按后缀更可靠,它依据实际响应头中的 Content-Type 判断。推荐配置如下:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
-
图片类(
image/jpeg、image/png、image/webp、image/gif、image/x-icon):ExpiresByType image/jpeg "access plus 1 year" -
CSS 与 JS(含现代类型):
ExpiresByType text/css "access plus 1 month"ExpiresByType application/javascript "access plus 1 month"
若文件名带哈希(如main.a1b2c3.js),可升级为"access plus 1 year" -
字体与 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 提升兼容性与控制力
仅靠 Expires 不够,现代浏览器更依赖 Cache-Control。配合 mod_headers 添加:
- 对 CSS/JS 加
immutable(适用于哈希命名资源):<ifmodule mod_headers.c><filesmatch>Header set Cache-Control "public, max-age=2592000, immutable"</filesmatch></ifmodule> - 对图片、字体等长效资源加
public, max-age=31536000 - 避免
no-cache或private出现在这些静态响应中
验证是否生效
重启 Apache 后,用浏览器开发者工具(F12 → Network)刷新页面,点开任意静态资源(如 logo.png),检查响应头是否同时包含:
Expires: [GMT 时间,如 Tue, 22 Jul 2027 00:00:00 GMT]-
Cache-Control: public, max-age=31536000(或对应秒数)
两者共存不冲突;若只出现 Cache-Control 而无 Expires,说明 mod_expires 未生效,需回头检查模块加载和 ExpiresActive On 是否写对位置。










