必须先启用mod_expires模块,否则所有缓存规则均被静默忽略;需在httpd.conf中取消loadmodule注释、重启apache,并在块中配置expiresactive on及各类资源的“access plus”缓存时间。

直接在 httpd.conf 里配缓存策略最稳,尤其适合本地开发或生产环境统一管理。关键不是写多少规则,而是先确保模块启用、路径正确、作用域明确。
必须先启用 mod_expires 模块
这是缓存生效的前提——XAMPP、Debian、CentOS 默认都禁用它,写了规则也白写:
- 打开 httpd.conf,搜索
LoadModule expires_module - 删掉行首的
#(如:LoadModule expires_module modules/mod_expires.so) - 保存后完全重启 Apache(Stop → Start,或命令行
httpd -k restart) - 验证是否加载成功:运行
httpd -M | grep expires,应输出expires_module (shared)
在 httpd.conf 末尾加标准缓存块
别塞进 .htaccess —— XAMPP 默认 AllowOverride None,且解析有开销。直接写主配置更可靠:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<ifmodule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 week"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
</ifmodule>
注意:“access plus” 以请求时间为起点,比 “modification plus” 更可控;HTML 不要设长缓存,可单独加一行 ExpiresByType text/html "access plus 5 minutes" 避免模板改了看不到效果。
多端口或虚拟主机需单独配置
如果你用 :8080、:8000 等非默认端口开发,全局规则只对 :80 生效:
- 打开
httpd-vhosts.conf或对应虚拟主机配置段 - 在每个
<virtualhost></virtualhost>块内,嵌入完整的<ifmodule mod_expires.c>…</ifmodule> - 确保该
<virtualhost></virtualhost>内启用了AllowOverride All(如果要用 .htaccess),但推荐仍走主配置
需要更强缓存?再加 mod_cache(可选)
mod_expires 控制客户端缓存;若还想让 Apache 自己缓存后端响应(比如 PHP 动态页),就得启用磁盘或内存缓存:
- 启用模块:
LoadModule cache_module modules/mod_cache.so和LoadModule cache_disk_module modules/mod_cache_disk.so - 设置缓存路径(Linux 常用):
CacheRoot /var/cache/apache2,并确保目录存在且 Apache 有写权限 - 简单启用:
<ifmodule mod_cache.c> CacheEnable disk / CacheIgnoreHeaders Set-Cookie </ifmodule>










