apache静态资源缓存需启用mod_expires模块,按类型设expiresbytype(图片1年、css/js1月、html禁用),配合cache-control头增强控制,最后用开发者工具验证expires和cache-control响应头。

确认模块已启用
先检查 `mod_expires` 是否加载:运行 apachectl -M | grep expires。若输出含 expires_module (shared),说明已就绪。没看到?需在 httpd.conf 中取消注释这行:LoadModule expires_module modules/mod_expires.so
虚拟主机用户若无权限改主配置,可直接在网站根目录的 .htaccess 中配置(前提是主机支持 AllowOverride All)。
按资源类型设置差异化过期时间
优先使用 ExpiresByType,它依据响应头中的 Content-Type 判断,比靠文件后缀更准确。典型推荐如下:
-
图片类(jpg/jpeg/png/webp/gif/ico):设为
"access plus 1 year"—— 基本不变,适合长效缓存 -
CSS 与 JS:设为
"access plus 1 month"—— 平衡更新频率与复用收益;若文件名带哈希(如main.abc123.js),可放心设为 1 年 -
字体(woff2)、WASM:设为
"access plus 1 year"或"access plus 1 week",视更新节奏而定 -
HTML、JSON、XML 等动态内容:必须禁用长效缓存,建议写
ExpiresByType text/html "now plus 0 min"或"access plus 10 minutes" -
禁用全局默认:显式写
ExpiresDefault "now plus 0 min",防止漏配类型被意外缓存
配合 Cache-Control 提升兼容性与控制力
Expires 是 HTTP/1.0 兼容字段,现代浏览器更依赖 Cache-Control。建议启用 mod_headers 补充设置:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 对图片、字体等长期资源加
public, immutable, max-age=31536000 - 对 CSS/JS 加
public, max-age=2592000 -
immutable告诉浏览器:该资源 URL 不会变内容,跳过条件请求(如If-None-Match),进一步提速
验证是否生效
部署后打开浏览器开发者工具(F12 → Network),刷新页面,点开任意静态资源(如 style.css),查看响应头中是否包含:
-
Expires:显示具体 GMT 时间(如Wed, 12 Jun 2027 11:06:00 GMT) -
Cache-Control:如public, max-age=2592000 - 同时存在两者不冲突,
Cache-Control优先级更高










