apache静态资源优化与缓存策略核心是分级协同:对带哈希指纹的js/css设1年强缓存(expiresbytype text/css "access plus 1 month"、cache-control "public, immutable, max-age=31536000"),图片/字体设1年,上传资源设1天协商缓存,html/json禁用缓存;启用gzip压缩、keepalive及路径分流(proxypassmatch或alias),结合cdn形成三级缓存体系。

制定 Apache 静态资源优化与缓存策略,核心是让浏览器、代理层和服务器协同减少重复传输,同时确保资源更新能及时生效。不是设得越长越好,而是按资源稳定性分级控制,配合压缩、连接复用和路径隔离提升整体效率。
按资源类型精准设置强缓存
静态资源缓存必须区分“是否带版本指纹”。带哈希名的文件(如 app.a2f8d3.js)可放心设一年强缓存;而无版本控制的通用资源(如 /uploads/logo.png)建议设 1 天或启用协商缓存。
- 图片类(jpg/jpeg/png/webp/gif/ico):用
ExpiresByType image/png "access plus 1 year" - CSS 与 JS:设 1 个月,
ExpiresByType text/css "access plus 1 month" - 字体(woff2/svg):同样设 1 年,
ExpiresByType font/woff2 "access plus 1 year" - HTML、JSON、XML 等动态输出:显式禁用缓存,
ExpiresByType text/html "access plus 0 seconds"
用 Cache-Control 补强并明确语义
Expires 是兼容性字段,现代浏览器更依赖 Cache-Control。需搭配 mod_headers 精细控制:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 对指纹化资源加
immutable,防止浏览器在 max-age 内发起验证请求 - 统一设
public,允许 CDN 和中间代理缓存 - 示例:
Header set Cache-Control "public, immutable, max-age=31536000"(对应 1 年) - 对上传类资源,用
max-age=86400, must-revalidate,兼顾时效与回源验证
启用压缩与连接复用降低传输开销
缓存再好,首次加载仍要传数据。开启 Gzip/Brotli 压缩和 KeepAlive 能显著缩短首屏时间:
- 只压缩文本类资源(HTML/CSS/JS/SVG/XML),跳过已压缩的图片(jpg/png/webp)
- 配置
AddOutputFilterByType DEFLATE text/html application/javascript text/css - KeepAlive 设为
On,MaxKeepAliveRequests 100,KeepAliveTimeout 5 - 添加
Header append Vary Accept-Encoding,避免缓存混淆
结构分离与路径分流提升处理效率
Apache 不适合混跑动静态内容。通过路径或域名隔离,可减少模块加载、.htaccess 解析等开销:
- 用
Alias /static /var/www/static映射独立目录,关闭该目录下AllowOverride All - 用
ProxyPassMatch ^/(.*\.(jpg|png|css|js))$ http://cdn-backend/$1将静态请求转给轻量服务或 CDN - 静态资源域名独立(如
static.example.com),规避 Cookie 传输、提升 DNS 并行度 - 若自建代理缓存,需启用
mod_cache_disk,并确保CacheEnable disk /与转发路径一致










