Apache中Gzip压缩等级应设为4–6级以平衡CPU开销与传输效率;需启用mod_deflate和mod_headers模块,按类型精细化压缩text/css、application/json等文本资源,排除JPEG/PNG等已压缩格式。

Apache中Gzip压缩等级直接影响CPU开销和传输效率,不建议盲目设为最高(9级)。合理选择4–6级能在压缩率与服务器负载之间取得稳定平衡。
确认mod_deflate和mod_headers已启用
压缩功能依赖两个核心模块。在Ubuntu/Debian系统中运行:
- sudo a2enmod deflate
- sudo a2enmod headers
CentOS/RHEL用户需检查/etc/httpd/conf/httpd.conf,确保以下两行未被注释:
- LoadModule deflate_module modules/mod_deflate.so
- LoadModule headers_module modules/mod_headers.so
若使用源码编译的Apache且未启用zlib,还需添加LoadFile /usr/lib64/libz.so(路径依系统而定),并重启服务。
设置合适的压缩等级(DeflateCompressionLevel)
等级范围是1–9,数值越高压缩越强、CPU占用越高。实测表明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 等级4:适合高并发小文本站点,CPU增幅小,压缩率约55%–65%
- 等级6:默认推荐值,兼顾HTML/CSS/JS压缩效果与稳定性,多数生产环境首选
- 等级8或9:仅适用于低流量、静态资源为主且CPU冗余充足的场景;动态PHP内容不建议使用
配置示例(加入<IfModule mod_deflate.c>块内):
<IfModule mod_deflate.c><br> DeflateCompressionLevel 6<br></IfModule>
按文件类型精细化控制压缩行为
不是所有内容都适合高压缩。应明确指定压缩对象,并排除已压缩资源:
- 优先压缩:text/html、text/css、application/javascript、application/json、text/xml
- 谨慎压缩:image/svg+xml(矢量图可压,但位图如JPEG/PNG本身已压缩,再压无效甚至略增体积)
- 必须排除:.jpg、.jpeg、.png、.gif、.pdf、.mp4、.zip等二进制格式,避免浪费CPU
通过SetEnvIfNoCase屏蔽:
SetEnvIfNoCase Request_URI \.(?:jpe?g|png|gif|pdf|mp4|avi|zip|rar|exe)$ no-gzip
验证压缩是否生效并观察实际影响
配置完成后重启Apache:
- Ubuntu:sudo systemctl restart apache2
- CentOS:sudo systemctl restart httpd
验证方式:
- 浏览器F12 → Network → 刷新页面 → 查看响应头是否有Content-Encoding: gzip
- 终端执行:curl -I -H "Accept-Encoding: gzip" https://yoursite.com/test.js,确认返回含gzip
- 用top或htop观察httpd进程CPU波动,对比压缩前后负载变化

















