验证动态内容缓存是否生效需三步:检查响应头(含x-cache: hit/miss)、查看缓存日志与磁盘文件、对比首次与二次请求耗时;必须确保mod_headers和mod_cache启用,并配置header set x-cache。

在 Apache 虚拟主机中验证动态内容缓存是否生效,关键不是只看配置有没有写对,而是确认请求确实被缓存、复用,并绕过了后端处理。整个过程分三步:检查响应头、观察日志痕迹、比对实际耗时。
看响应头里有没有缓存标记
这是最直接的验证方式。用 curl -I 或浏览器开发者工具的 Network 标签页查看响应头:
- Cache-Control 或 Expires 字段出现,说明缓存策略已下发(但不等于内容真被缓存了)
- 真正有效的标志是 X-Cache: HIT 或 X-Cache: MISS(需手动添加该头,见下文)
- 如果看到 Set-Cookie 仍存在,而你又设置了
CacheIgnoreHeaders Set-Cookie,说明该头被忽略,缓存才可能生效
加 X-Cache 响应头定位命中状态
Apache 默认不输出缓存命中信息,需要自己加:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在虚拟主机或 Location 块里加入:
Header set X-Cache "MISS" env=cache-missHeader set X-Cache "HIT" env=cache-hit - 确保已启用
mod_headers和mod_cache - 重启 Apache 后,第二次访问同一 URL,若返回
X-Cache: HIT,就说明缓存已起作用
查 Apache 缓存日志和磁盘文件
光看响应头还不够,要确认缓存真的落盘且可复用:
- 打开缓存日志(可选):在主配置中加
CacheLog "/var/log/apache2/cache.log"和CacheLogLevel 5,重启后观察日志中是否有cache: store或cache: serve记录 - 检查缓存目录:
ls -la /var/cache/apache2/mod_cache_disk/,看到有层级子目录(如a/b/xxx.cache)且文件时间随请求更新,说明缓存正在写入 - 注意:若目录为空,常见原因是
CacheIgnoreHeaders Set-Cookie没配,或响应含Vary: *、no-cache等禁止缓存的头
对比两次请求的实际耗时
动态内容缓存的价值最终体现在性能上:
- 用
curl -w "@format.txt" -o /dev/null -s http://yoursite.com/dynamic.php(其中 format.txt 包含 time_namelookup、time_connect 等字段),对比首次与二次请求的time_total - 若后端 PHP/Python 脚本原本耗时 800ms,第二次降到 20–50ms,基本可判定缓存生效
- 配合
ab或wrk做简单压测,看 QPS 提升和平均延迟下降是否符合预期










