唯一有效验证方式是查chrome devtools network中index.html响应头是否含content-encoding: br和vary: accept-encoding,并对比size与content体积;nginx需先编译ngx_brotli模块,brotli_comp_level推荐4~6,brotli_types须精准限定,且仅https下生效。

怎么确认 Brotli 真正在传 HTML
别看构建后 index.html.br 文件存不存在,也别信 Nginx 日志里有没有“brotli”字样——唯一有效验证方式是查真实 HTTP 响应头。打开 Chrome DevTools → Network → 刷新页面 → 找到 index.html 请求 → 点开 Response Headers:必须看到 Content-Encoding: br,同时 Vary: Accept-Encoding 也要有。再对比表格里的 “Size”(实际传输字节数)和 “Content”(解压后体积):如果 Size 接近 Content,说明压根本没生效。
Nginx 开 Brotli 必须先编译模块,不是改配置就行
官方 Nginx 默认不带 Brotli 支持。nginx -V 输出里搜不到 ngx_brotli,就说明模块没集成。此时写再多 brotli on 都是无效配置。必须手动编译:./configure --add-module=/path/to/ngx_brotli,再 make && make install。宝塔用户不能只点“启用”,得进后台卸载重装 Nginx 并勾选自定义模块路径。模块加载后,load_module 指令必须放在 events 块之前,否则 Nginx 启动失败。
brotli_comp_level 和 types 配错,HTML 反而更慢
默认 brotli_comp_level 11 对 HTML 是负优化:压缩耗时翻倍,首字节延迟明显,边缘节点容易卡住。推荐值是 brotli_comp_level 5,4~6 是安全区间。同时 brotli_types 必须精准:只列 text/html、text/css、application/javascript、application/json、image/svg+xml;加 text/plain 或通配符 * 会导致二进制响应被误压,触发解压失败或乱码。小文件也要跳过:brotli_min_length 256,否则几十字节的空 JSON 也被塞进压缩流水线。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
预压缩 .br 文件 ≠ 自动生效,还得配对服务端指令
用 brotli -q 5 index.html 生成了 index.html.br,但 Nginx 不会自动返回它——除非你开了 brotli_static on,且该指令在对应 location 块里显式启用。注意:brotli_static on 和 gzip_static on 可共存,Brotli 优先,gzip 降级;但若只开 brotli_static 却没配 gzip_static,遇到 strip br 头的老旧代理,就会裸传 HTML。生成的 .br 文件必须和原文件同目录、同名、权限一致,否则 Nginx 找不到。
最容易被忽略的是协商机制本身:Brotli 只在 HTTPS 下由浏览器主动发 Accept-Encoding: br,HTTP 站点永远不触发。哪怕所有配置都对,协议不对,Content-Encoding: br 就永远不会出现在响应头里。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










