Nginx中Brotli压缩质量应按资源类型差异化设置:HTML/CSS/JS设为5,JSON设为4,预压缩构建产物可用6–8;需同步调优brotli_min_length、brotli_window等参数,并确保模块启用及配置位置正确。

Nginx 中设置 Brotli 压缩质量等级,核心参数是 brotli_comp_level,它控制压缩强度(0–11),但不是越高越好,需按资源类型和运行场景差异化设定。
brotli_comp_level 的合理取值逻辑
该参数直接影响压缩率、CPU 开销与解压延迟,尤其在移动端或高并发下需谨慎:
-
HTML / CSS / JS 主资源:推荐设为
5- 实测体积再降 15–20%,解压耗时与 gzip 相当
- iOS/Android 主流机型解压 100KB 文本稳定低于 8ms
-
API 返回的 JSON 数据:建议设为
4- 结构化数据重复模式少,4 级已足够,避免高阶模型引入额外开销
- 高频小响应(
-
构建产物(如 dist/.js、dist/.css)预压缩:可用
6–8,但这是离线操作,不走brotli_comp_level- 运行时动态压缩阶段,不建议超过
6
- 运行时动态压缩阶段,不建议超过
其他关联参数必须同步调优
单设 brotli_comp_level 不足以发挥效果,需配合以下配置:
-
brotli_min_length 1024:小于 1KB 的响应不压缩,避免无效 CPU 消耗(默认仅 20 字节,太低) -
brotli_window 18:即lgwin=18(256KB 窗口),适配 HTML/CSS/JS 常见块尺寸,在内存与长距离匹配间平衡 -
brotli_static off:若启用动态压缩(非读取.br文件),此项必须为off -
brotli_types必须显式列出目标 MIME 类型,例如:brotli_types text/html text/css application/javascript application/json image/svg+xml;
注意事项
-
brotli_comp_level 11会使压缩时间翻 3 倍,TTFB 显著升高,对首屏加载反而有害 -
0–1级压缩增益仅比 gzip 高 5–8%,无实际价值 - 所有
brotli_*指令必须放在http{}块内(或server/location块中),且 Nginx 编译时已启用--with-http_brotli_module
配置生效后,用 curl -H "Accept-Encoding: br" -I https://yoursite.com/test.js 检查响应头是否含 Content-Encoding: br。


















