如何配置Apache 2.4实现浏览器对HTML文件的缓存
解决Apache 2.4下HTML文件无法缓存问题
你当前配置仅设置了全局默认过期规则,很多Apache部署会默认给text/html类型资源附加no-cache、must-revalidate等缓存头,优先级高于ExpiresDefault,导致HTML无法正常缓存。
1. 调整mod_expires配置
修改/etc/httpd/conf/httpd.conf中的对应块,新增HTML专属缓存规则:
<IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 30 days" # 为HTML MIME类型设置过期时间 ExpiresByType text/html "access plus 7 days" # 匹配.html/.htm后缀文件强制设置缓存头 <FilesMatch "\.(html|htm)$"> Header set Cache-Control "public, max-age=604800" </FilesMatch> </IfModule>
7天为示例时长,可根据业务需求调整,max-age单位为秒
2. 排查冲突配置
- 检查站点根目录下的
.htaccess文件,是否存在针对HTML文件的Cache-Control: no-cache类配置,此类规则优先级高于全局配置 - 检查
/etc/httpd/conf.d/目录下的虚拟主机配置,是否有针对站点首页、HTML资源的缓存禁用规则
3. 确认依赖模块已启用
执行命令验证mod_expires和mod_headers都处于启用状态:httpd -M | grep -E 'expires|headers'
如果返回结果缺失对应模块,执行命令启用:
a2enmod expires a2enmod headers
4. 验证配置生效
重启Apache使配置生效:systemctl restart httpd
验证时不要使用F5强制刷新,直接在浏览器地址栏回车访问HTML文件,在开发者工具「网络」面板查看响应头:
- 存在
Expires字段,值为你配置的过期时间 Cache-Control字段包含public, max-age=xxx,说明配置生效
内容的提问来源于stack exchange,提问作者dmjy
相关产品推荐
相关产品推荐

