上一篇 下一篇 分享链接 返回 返回顶部

gzip 与 brotli 压缩怎么选与参数调优

发布人:用户运营 | 723 发布时间:2小时前 阅读量:1

该文章由AI生成,仅为SEO优化测试,相关内容不保证准确!!!

引言

对中小站点的 Nginx 服务器来说,文本类资源(HTML、CSS、JS、JSON、SVG)通常占页面体积的一半以上,启用压缩可减少 60%~80% 的传输量,直接改善首屏时间和 SEO 评分。主流选择是 gzip 和 brotli:前者兼容一切客户端、CPU 消耗低;后者压缩率更高,但需要额外模块和更多算力。本文给出两者的取舍逻辑与具体参数调优方案。

一、gzip 与 brotli 的核心差异与选型

实测同一份 200KB 的 JS 文件:gzip -5 压缩到约 52KB,brotli -5 约为 45KB,brotli -11 可到 40KB,比同级别的 gzip 再省 10%~25%。CPU 方面,brotli -5 的压缩耗时约为 gzip -5 的 1.5~2 倍,-11 则可能达到 5 倍以上,因此静态内容与动态内容要分开决策:静态资源建议预压缩并用 brotli 高档位,动态接口用 gzip 或 brotli 中低档位。选型原则:只需兼容老旧客户端或 CPU 紧张的 1 核小机,直接用 gzip;追求极限性能且流量以现代浏览器为主,上 brotli 并保留 gzip 作为回退(Accept-Encoding 同时携带两种时,Nginx 按 brotli 优先输出)。

二、gzip 推荐配置与参数解释

在 nginx.conf 的 http 段写入:
gzip on;
gzip_comp_level 5;
gzip_min_length 1k;
gzip_vary on;
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
gzip_buffers 4 16k;
关键点:gzip_comp_level 1~9,5 是性价比拐点,6 以上收益小于 2% 但 CPU 翻倍;gzip_min_length 设 1k,避免压缩小于 1KB 的内容反而变大;gzip_vary on 会输出 Vary: Accept-Encoding,这是 CDN 缓存命中正确版本的必要条件;gzip_types 默认只压 text/html,必须手动补 CSS/JS/JSON/SVG。禁止压缩 image/png、video/mp4 等已压缩格式,纯浪费 CPU。

三、brotli 安装与调优

官方 Nginx 不含 brotli,需要 ngx_brotli 模块。源码编译:git clone --recursive https://github.com/google/ngx_brotli,然后 configure 时追加 --add-module=../ngx_brotli 重新编译;CentOS 可直接安装 nginx-module-brotli 包。配置示例:
brotli on;
brotli_comp_level 5;
brotli_min_length 1k;
brotli_types text/css application/javascript application/json image/svg+xml;
动态响应用 4~5 档即可;静态文件强烈建议构建时预压缩,配合 brotli_static on; 和 gzip_static on;,Nginx 直接回送 .br/.gz 文件,实现 brotli -11 的压缩率且运行时 CPU 开销接近零。前端构建产物体积大时可对 JS 用 9~11 档预压。

四、验证与常见坑

用 curl 验证:curl -I -H “Accept-Encoding: gzip, br” https://your-domain.com/app.js,确认响应头出现 Content-Encoding: br 或 gzip,且 Vary 包含 Accept-Encoding。再对比传输体积:未压缩约 200KB、压缩后应在 60KB 以内。常见坑有三个:一是套了 CDN 后源站压缩被剥离,需在 CDN 控制台开启“智能压缩”并保留 Vary;二是 HTTPS 下某些老客户端不支持 brotli,gzip 回退必须保留;三是压测观察 CPU,若单机 QPS 高、CPU 长期超 70%,先把压缩档位降到 4,或改用静态预压缩方案。

总结

一句话方案:动态内容 gzip_comp_level 5 + brotli_comp_level 4~5 双开;静态资源构建期产出 .gz 和 .br 文件并用 gzip_static/brotli_static 直发;全站记得 gzip_vary/brotli_min_length 这些细节,再用 curl 实测响应头确认生效。带宽省下来的钱和加载速度的提升,往往比换更高配服务器更划算。

目录结构
全文
微信公众号 微信公众号
抖音官方账号 抖音官方账号
CSDN官方账号 CSDN官方账号
经营主体身份码 经营主体身份码
电子邮箱: admin@2v8.cn

本页面部分展示信息可能存在偏差/错误