gzip压缩对纯文本资源(HTML/CSS/JS/JSON/XML)效果显著,压缩率60%–80%,而对JPG/PNG等已压缩二进制文件基本无效(0%–5%),甚至可能增大体积,故应精准配置gzip_types并排除高风险类型。

gzip 压缩对不同类型内容的效果差异非常显著,核心规律是:越接近纯文本、重复模式越多、未经过其他压缩的资源,压缩收益越高;反之则无效甚至有害。
文本类资源压缩效果最好
HTML、CSS、JavaScript、JSON、XML 等纯文本格式天然适合 gzip。它们包含大量空格、换行、重复标签或变量名,LZ77 算法能高效识别并替换重复块。实测中:
- HTML 文件通常压缩率在 60%–80%,100 KB 可压至 20–40 KB
- CSS/JS 压缩率约 40%–75%,尤其未混淆、未压缩的开发版 JS 效果更明显
- JSON/XML 因结构高度重复(如字段名、引号、括号),压缩率常达 70%–80%
二进制与已压缩资源基本不受益
图片(JPG/PNG/GIF)、PDF、音视频、ZIP 等本身已是高压缩格式,再套一层 gzip 不仅体积难减小,还可能略微增大(因添加 gzip 头部),同时徒增 CPU 开销:
- JPG/PNG 压缩率普遍为 0%–5%,部分小图甚至膨胀 1–2%
- PDF 文件多数已用 Flate 编码压缩,gzip 再压几乎无变化
- 已 gzip 或 brotli 压缩过的文件(如 .gz/.br 后缀资源)绝对禁止二次压缩
配置不当会放大负面影响
若未合理设置 gzip_types 或忽略 gzip_min_length,容易导致低效甚至错误压缩:
- 对小于 1 KB 的小文件(如 favicon.ico、空响应体)启用压缩,开销远大于收益
- 误将
image/*、application/pdf加入 gzip_types,浪费 CPU 且无传输节省 - 未开启 gzip_vary on,代理或 CDN 可能缓存错版本,把 gzip 内容返回给不支持的客户端
真实场景中的推荐实践
生产环境应以“精准压缩”为原则,而非全量开启:
- 只启用明确支持的文本 MIME 类型:
text/plain text/css application/json application/javascript text/xml application/xml - 显式排除高风险类型:
gzip_types中不写image/*、application/octet-stream等泛用类型 - 结合 map 指令检查上游响应头:
Content-Encoding已含gzip或br时直接跳过压缩 - 对高频静态资源,配合 gzip_static on 使用预生成 .gz 文件,彻底规避运行时 CPU 消耗


















