gzip压缩可显著降低html、css、js等文本资源传输流量,压缩率60%–80%,需精准配置类型、阈值(min_length 1024)、等级(level 5–6),启用vary与static预压缩,并配合缓存与传输优化。

gzip 压缩能显著降低静态资源传输流量,核心在于对文本类资源做高效体积削减——HTML、CSS、JS、JSON 等压缩率普遍达 60%–80%,直接减少出口字节数,而非提升网速。
只压该压的文件类型
压缩收益集中在文本资源,二进制文件(如 .jpg、.png、.woff2、.mp4)本身已高压缩,再压无效且徒增 CPU 开销:
- 必开类型:text/css、application/javascript、text/html、application/json、text/xml、image/svg+xml
- 禁用类型:.jpg、.jpeg、.png、.gif、.webp、.pdf、.mp4、.woff、.ttf
- 避免使用 gzip_types *,防止误压导致响应异常或缓存错乱
设合理阈值与压缩等级
小文件不值得压,高压缩级不等于高性价比:
- gzip_min_length 1024:跳过小于 1KB 的响应(如空 JSON、短内联脚本),避免越压越大
- gzip_comp_level 5 或 6:5 级压缩率约 63%,CPU 占用比 9 级低 40%;6 级为多数生产环境平衡点
- 不盲目调高到 9,实测 7 级后压缩率增幅不足 2%,但 CPU 耗时翻倍
启用 gzip_vary 与预压缩协同
让缓存层(CDN、代理)正确识别并分别缓存压缩/未压缩版本,同时规避运行时计算:
- gzip_vary on:响应头自动加 Vary: Accept-Encoding,防止缓存混用
- gzip_static on:构建阶段生成 app.js.gz,Nginx 直接返回,零 CPU 换带宽节省
- 需搭配 gzip_http_version 1.0 或更高,兼容旧客户端(如部分企业内网 IE)
配合长缓存与传输优化
压缩只是第一步,减少重复拉取和提升单次传输质量才能放大效果:
- 对带哈希的资源(main.a1b2c3.js)配 expires 1y; add_header Cache-Control "public, immutable"
- 静态 location 块中关闭日志:access_log off,避免日志 I/O 白占磁盘与网络带宽
- 启用 sendfile on 和 tcp_nopush on,实现零拷贝+满包发送,降低 TCP 小包数量











