Apache可通过合理配置成为高性能静态内容服务端,关键在于启用Gzip压缩、设置强缓存策略、开启KeepAlive连接复用、配合CDN回源,并正确配置响应头。

Apache 本身不是专为高性能静态分发设计的 CDN,但通过合理配置,完全可以把它打造成响应快、负载低、缓存友好的静态内容服务端。关键不在于堆硬件,而在于减少重复计算、降低传输量、延长本地缓存、缩短连接开销。
启用并精细控制 Gzip/Brotli 压缩
压缩能直接缩小 HTML、CSS、JS、字体等文本类资源体积,通常可减少 60%–80% 的传输量。Apache 默认只带 mod_deflate(Gzip),建议优先启用它,并排除已压缩的二进制文件:
- 在
httpd.conf或虚拟主机配置中加入: <IfModule mod_deflate.c>AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json application/xmlSetEnvIfNoCase Request_URI \.(?:jpe?g|png|gif|webp|pdf|mp4|woff2?)$ no-gzip</IfModule>
注意:不要对图片、视频、字体等本身已压缩的格式再启用 Gzip,否则徒增 CPU 开销且无收益。
设置强缓存策略,让浏览器“记住”资源
浏览器缓存是提升二次访问速度最有效的手段。用 mod_expires 设置远期过期时间,再配合 mod_headers 补充 Cache-Control:
- 启用模块:
LoadModule expires_module modules/mod_expires.so和LoadModule headers_module modules/mod_headers.so - 配置示例:
<IfModule mod_expires.c>ExpiresActive OnExpiresByType image/jpg "access plus 1 year"ExpiresByType image/webp "access plus 1 year"ExpiresByType text/css "access plus 1 month"ExpiresByType application/javascript "access plus 1 month"</IfModule><IfModule mod_headers.c>-
Header set Cache-Control "public, max-age=31536000"(对图片) -
Header set Cache-Control "public, max-age=2592000"(对 CSS/JS) </IfModule>
版本化文件名(如 main.a1b2c3.js)后,可放心设为一年缓存,无需担心更新失效。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
开启 KeepAlive 并调优连接复用
HTTP/1.1 默认支持持久连接,但 Apache 默认可能关闭或参数保守。开启后,一个 TCP 连接可承载多个资源请求,显著减少握手和慢启动开销:
KeepAlive On-
MaxKeepAliveRequests 100(单连接最多处理 100 个请求) -
KeepAliveTimeout 5(空闲连接保持 5 秒,太长会积压连接,太短失去复用价值)
搭配 MPM Event 模块效果更佳——它比 Prefork 更适合高并发静态服务,内存占用更低。
剥离静态资源到独立域名或路径,并对接 CDN
Apache 不擅长全球分发,但它是 CDN 的理想源站。实际加速靠 CDN,Apache 只需做好两件事:
- 将静态资源统一放在子目录(如
/static/)或子域名(如static.example.com),便于 CDN 配置抓取规则; - 确保所有静态响应头正确(特别是
Cache-Control和ETag),CDN 依赖这些头决定是否缓存、缓存多久; - 如使用现代 CDN(Cloudflare、CloudFront 等),可在 Apache 中加安全头增强防护:
Header always set X-Content-Type-Options "nosniff"Header always set X-Frame-Options "DENY"
CDN 回源时只走一次 Apache,后续请求全由边缘节点响应,这才是真正的“性能加速”主干。
不复杂但容易忽略:每项配置改完都要重启 Apache(sudo systemctl reload httpd),并用 curl -I https://yoursite/css/style.css 验证响应头是否生效。真正起效的是组合——压缩 + 缓存 + 复用 + CDN,缺一不可。


















