http/2不改变缓存逻辑,但通过多路复用、hpack压缩和tls加速提升缓存命中资源的传输效率;apache需正确配置mod_cache_disk、响应头(如cache-control: public)、路径对齐及mod_expires/mod_headers等协同优化。

HTTP/2 本身不改变缓存逻辑,但它让缓存策略的效果更充分释放——多路复用避免队头阻塞,HPACK 压缩减少头部开销,TLS 加速提升首字节时间,这些都让缓存命中的资源更快抵达浏览器。真正起决定作用的,还是 Apache 的缓存配置是否与 HTTP/2 协同得当。
必须启用 mod_cache_disk + 正确响应头
HTTP/2 不自动开启缓存,Apache 仍需靠 mod_proxy(反向代理场景)或直接服务静态文件时靠 mod_cache_disk 落地响应体。关键点:
- 后端(如 Tomcat)返回的响应必须带 Cache-Control: public, max-age=31536000,仅 max-age 不够,缺 public 会被 Apache 缓存模块拒绝
- 若静态资源带哈希指纹(如 main.a1b2c3.js),可加 immutable,告诉浏览器“内容永不变更”,跳过条件请求
- 上传类路径(如 /uploads/)建议用协商缓存:确保后端返回 ETag 或 Last-Modified,Apache 默认支持验证
静态资源路径统一 + CacheEnable 严格对齐
Apache 缓存只识别它自己暴露的 URL 路径,不是后端真实路径:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 如果 ProxyPass /static/ http://127.0.0.1:8080/assets/,缓存指令必须是 CacheEnable disk /static/,写成 /assets/ 无效
- 避免碎片化路径,比如不用 /css/、/js/、/img/ 分散配置,统一收口到 /static/ 下,便于集中管理缓存策略
- 不要用 CacheEnable disk / 全局开启——它对动态响应(含 Set-Cookie)基本不生效,还可能干扰正常流程
配合 mod_expires 和 mod_headers 强化浏览器端缓存
HTTP/2 让多个缓存资源并行加载变快,但前提是浏览器愿意存、且存得对:
- 启用 mod_expires,按类型设长期缓存:ExpiresByType image/webp "access plus 1 year"、ExpiresByType text/css "access plus 1 month"
- 用 mod_headers 补充或覆盖响应头:Header set Cache-Control "public, max-age=31536000, immutable"(适用于指纹文件)
- 确保 CDN(如有)也认这些头:CDN 缓存依赖 Cache-Control: public 和合理 max-age,否则边缘节点不存
压缩与传输优化不可少
HTTP/2 虽支持头部压缩,但响应体仍需瘦身:
- 启用 mod_deflate 压缩 HTML/CSS/JS/JSON 等文本资源;跳过已压缩格式(.jpg/.webp/.gz)
- 更进一步可用 Brotli(需编译支持),比 Gzip 压缩率高 15%–20%,特别适合 JS/CSS
- 禁用 Server Push(已过时),改用 103 Early Hints 提前告知浏览器预加载关键资源,更符合现代实践










