apache开启静态文件缓存的核心是启用mod_expires模块并按mime类型精准设置过期时间,如图片设“access plus 1 year”、css/js设“access plus 1 month”,禁用html等动态内容缓存,并配合mod_headers添加cache-control与immutable头,最后通过curl或devtools验证响应头。

Apache 开启静态文件缓存,核心是启用 mod_expires 模块并按资源类型设置合理过期时间,不是简单“全开”,而是“分类型、有区分、禁动态”。
确认并启用 mod_expires 模块
先检查模块是否已加载:
- 运行
apachectl -M | grep expires,看到expires_module表示已启用 - 若未启用,在
httpd.conf或apache2.conf中取消注释:LoadModule expires_module modules/mod_expires.so - Debian/Ubuntu 系统可直接执行:
a2enmod expires - 修改后重启服务:
systemctl restart apache2(或httpd)
配置按 MIME 类型的精准缓存时长
在虚拟主机配置或 .htaccess 中添加以下内容,优先使用 ExpiresByType(比扩展名更可靠):
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
-
ExpiresActive On必须开启,否则所有规则无效 - 图片类(JPG/PNG/WebP/ICO)建议设为
"access plus 1 year" - CSS 和 JS 文件建议设为
"access plus 1 month" - 字体(WOFF2)、WASM 等可设为
"access plus 1 year"或"access plus 1 week" - 坚决避免对
text/html、application/json、PHP 输出等动态内容设长缓存;可显式禁用:ExpiresByType text/html "access plus 0 seconds"
补充 Cache-Control 头提升兼容性
仅靠 Expires 不够现代,需搭配 mod_headers 设置更精细的 Cache-Control:
- 确保也启用了
mod_headers(a2enmod headers) - 对图片加
public, immutable, max-age=31536000(1年),immutable告诉浏览器该资源不会变更,跳过条件请求 - 对 CSS/JS 加
public, max-age=2592000(30天) - 不推荐依赖
ExpiresDefault,它容易误缓存 HTML 或 API 响应
验证缓存是否生效
部署后务必验证,避免配置无效:
- 用
curl -I https://yoursite.com/style.css查看响应头中是否有Expires和Cache-Control - 打开浏览器开发者工具 → Network → 刷新页面 → 点击某个 JS 或图片文件 → 查看 Headers 标签页
- 确认状态码为
200 (from disk cache)或304(非首次请求) - 注意:修改配置后需重启 Apache 或重载(
systemctl reload apache2),.htaccess修改则无需重启但需确保AllowOverride已开启










