brotli 慢到只能预压缩?实测 brotli-6 比 gzip-9 快 3 倍、还多压 2.7%:构建产物压缩选型的实测复盘

发布时间:2026/8/29 4:59:52

brotli 慢到只能预压缩?实测 brotli-6 比 gzip-9 快 3 倍、还多压 2.7%:构建产物压缩选型的实测复盘
2026 年了很多构建脚本还在gzip -9一把梭——因为行业里流传一个印象brotli 太慢只配在 CI 里预压缩动态/构建期压缩不敢用。但我在同一台机器、同一份 2MB 的 JS 产物上把 gzip、deflate、brotli 各档拉到一起实测结果有点反直觉brotli 开到 6 档编码比 gzip -9 快 3.2 倍压完还小 2.7%。brotli 慢 这个标签可能只贴对了第 11 档。背景为什么这件事值得写构建产物JS、CSS、JSON、source map本质都是文本压缩是性价比最高的优化之一零代码改动、直接砍传输体积和 CDN 账单。gzip 基于 Deflate 算法是 1990 年代就定下的默认brotli 是 Google 2015 年推出的内置一份针对 HTML/CSS/JS 的静态字典文本上天然占优。2026 年几篇压缩选型文章给出的共识是brotli-11 压缩率最高但极慢约 0.5–1 MB/s只适合构建时预压缩动态内容用 brotli-4~6 或退回 gzip。这条建议本身没错但brotli 整体慢的模糊印象让不少团队干脆不在构建/CI 里用 brotli默认gzip -9了事。本文不炒共识而是用 Node 内置zlib在同一环境、同一份语料上把 gzip / deflate / brotli 的 1~11 档统一测一遍看慢到底指哪一档、甜点到底在哪。解剖gzip 和 brotli 到底差在哪先拆一个最容易混淆的点gzip 和 deflate 的压缩率完全一样。gzip 就是 zlib 的 deflate 流外面套了一层 10~18 字节的头部和 CRC 校验多出来的只是包装不影响压缩本身。所以本文里gzip-9和deflate-9的输出字节数会几乎相同区别仅在解码时的头部开销。brotli 的不同在于它带一份静态字典常见 HTML 标签、CSS 属性、JS 关键字对 web 文本能多挤出几个百分点。两者都靠档位level在编码速度和压缩率之间做权衡——这是本次实测的两个核心变量编码速度MB/s / 毫秒决定构建、CI、动态压缩的 CPU 成本压缩率ratio决定传输体积、存储、CDN 账单解码速度只有在请求侧浏览器 / 服务端解压才重要跑一次测一下即可。真正要判断的是为了多压几个百分点值得多花多少编码时间。实证一次真实数据主语料js_2mb是一份2,097,152 字节约 2.0 MB的类 minified JS重复 token 随机标识符压缩友好度接近真实打包产物。所有配置在同一 Node v22 进程内跑编码取 5~9 轮中位warmup 一次排除 JIT 抖动。配置输出大小压缩率编码耗时编码速度与 gzip-9 比gzip-9573 KB3.576×138.3 ms14.5 MB/s基准deflate-9573 KB3.577×138.1 ms14.5 MB/s同率仅多 18B 包装brotli-4581 KB3.525×17.8 ms112 MB/s7.8× 快略大 1.4%brotli-6558 KB3.673×43.4 ms46 MB/s3.2× 快小 2.7%brotli-9544 KB3.765×114.0 ms17.6 MB/s1.2× 快小 5.3%brotli-11484 KB4.230×1908.7 ms1.05 MB/s13.8× 慢小 18.4%图1横轴是编码速度MB/s越右越快纵轴是压缩率越高越好。右下方的 brotli-6 同时落在更快且更高压缩率区域——它就是甜点brotli-11 压缩率最高却在最左下是仅适合预压缩的慢档。结论很清楚brotli 在 4~9 档的编码速度都优于或仅略慢于gzip-9同时压缩率更好真正慢的只有第 11 档。所谓brotli 慢到只能用预压缩把 level-11 的特征错误地推广到了整个算法。解码侧完全不是问题同样 2MB 语料brotli 各档解码 4~6 msgzip 4 ms差异在噪声范围内即便放到 6MBbrotli-11 解码也只要 15.6 ms。请求侧解压不会成为瓶颈。复现这段基准只需要 Node无需任何依赖# 纯 Node 内置 zlib零外部包 node -e const zlibrequire(zlib); const bufBuffer.alloc(2*1024*1024, a).fill(function f(){return this.x}const y123;); for(const [a,l] of [[gzip,9],[deflate,9],[brotli,6],[brotli,11]]){ const t0performance.now(); const o abrotli ? zlib.brotliCompressSync(buf,{params:{[zlib.constants.BROTLI_PARAM_QUALITY]:l}}) : (agzip?zlib.gzipSync(buf,{level:l}):zlib.deflateSync(buf,{level:l})); const msperformance.now()-t0; console.log(al, (o.length/1024|0)KB, (buf.length/o.length).toFixed(3)x, ms.toFixed(1)ms); } 图26 个配置的编码速度柱状图。gzip-9 / deflate-9 都卡在 ~14.5 MB/sbrotli-6 冲到 46 MB/sbrotli-4 更是 112 MB/s唯一的深坑是 brotli-11 的 1.05 MB/s。速度维度和图1 的压缩率维度共同指向同一个甜点brotli-6。扩展6MB 与 4MB JSON 还成立吗单一语料可能是巧合再上两个量级/类型验证结论的稳健性。js_6mb6.0 MB 同类 JSbrotli-6 编码 31.1 MB/sgzip-9 只有 13.7 MB/s2.3× 快压缩率 3.649× vs 3.577×小 2.1%brotli-11 掉到 0.94 MB/s13.8× 慢但率升到 4.249×。趋势与 2MB 完全一致。json_4mb4.19 MB JSON这里出现一个有意思的分化——brotli-6 仍稳赢38.7 MB/s vs 27.9 MB/s1.4× 快率 3.323× vs 3.280×小 1.3%但brotli-9 在 JSON 上反而 14.4 MB/s比 gzip-9 慢 1.9×。也就是说brotli-9 比 gzip-9 还快 的优势只在 JS 这类高度冗余文本上成立换 JSON 就反转。图3在 js_2mb / js_6mb / json_4mb 三类语料上brotli-6紫对 gzip-9蓝的编码速度与压缩率双指标。速度维 brotli-6 三类全胜压缩率维也全胜或持平——brotli-6 是跨内容都稳的甜点brotli-9 则不是。一句话收束brotli-6 是稳健甜点brotli-9 的更快看内容brotli-11 是预压缩专属档。局限哪些事没解决实现绑定 Node zlib本文用的是 Node 内置的纯 JS/WASM 实现。系统brotli/gzipCLI、或 Rust 实现的 zstd多篇 2026 文章提到 zstd-3 比 gzip-6 快 5×会得到不同绝对值。结论适用于在 Node 构建/CI 流程内做压缩的场景。语料是合成的类是 minified JS / JSON真实业务包冗余度不同绝对数字会变但brotli-6 更快且更小、brotli-11 极慢的趋势一致。没测不该压的东西图片、woff2、视频等已压缩格式再压只会变大变慢小于约 150~300 字节的小文件因算法帧开销也会负优化构建脚本应跳过。单线程单核高并发动态压缩时brotli 编码器单实例约 16MB 内存占用要计入成本gzip 仅约 256KB——这点在动态压缩场景比速度更该被盯。结论与下一步brotli 慢是 level-11 的标签不是 brotli 的。落到工程实践上可复用的三条构建 / CI 内压缩直接上 brotli-6比gzip -9更快2~3×、更小2~5%、解码不拖请求没有理由再用纯 gzip。静态资源CSS/JS/JSON/map用 brotli-11 预压缩一次性编码成本运行时零开销配 nginxbrotli_static on直接落盘服务。动态内容 CPU 吃紧时退回gzip -6通用、内存占用小、解码最快brotli-9 别盲上它在 JSON 上比 gzip-9 还慢。把压缩档位当成速度—率的旋钮而不是非黑即白比记住brotli 慢这种标签有用得多。开源地址矩阵门户GitHub - wangzifan396-wzf/WB: nano-tools: 1310 single-file, zero-dependency, local-first web utilities in one portal. Offline and private, nothing leaves your browser. Binary protocol parsers, crypto, dev, audio, visualization, productivity. · GitHub单文件工具聚合器GitHub - wangzifan396-wzf/nano-workbench: Single-file tabbed launcher for the nano-tools matrix - one tab, 382 curated tools (of 1310), instant switching. Zero-dep. Part of nano-tools. · GitHubGitHub 组织主页wangzifan396-wzf (WangZi) · GitHub

相关新闻

XSLT 编辑 XML:从入门到实战的完整指南

XSLT 编辑 XML:从入门到实战的完整指南

2026/8/29 4:49:52

1. 引言XSLT(Extensible Stylesheet Language Transformations)是一种用于将 XML 文档转换为其他格式(如 HTML、纯文本或其他 XML 结构)的声明式语言。它不仅是数据展示的利器,更是 XML 数据编辑、清洗和重构的核心工具…

告别文献造假风险✅2026论文抽检严查!OKBIYE真实文献溯源才是定稿底气

告别文献造假风险✅2026论文抽检严查!OKBIYE真实文献溯源才是定稿底气

2026/8/29 4:49:52

很多同学论文翻车,根本不是查重超标、AI痕迹过重,而是栽在了参考文献不真实、不匹配、无法溯源这个隐形雷区上。 随着2026年高校毕业论文审核全面升级,学校的抽检重点早已从“单纯查重复率”转向学术真实性核查。其中,参考文献溯…

甲醛白菜如何快速检测:冠宇仪器甲醛速测试剂守护舌尖安全

甲醛白菜如何快速检测:冠宇仪器甲醛速测试剂守护舌尖安全

2026/8/29 4:49:52

河北康保县 "甲醛白菜" 事件曝光后,食品安全检测再次成为社会关注的焦点。国务院食安办、农业农村部、市场监管总局三部门联合部署全国易腐蔬菜专项排查,但一个现实困境摆在面前:白菜等生鲜蔬菜流通速度极快,从田间收购…

Java二星级练习卷:高频基础考点与工程避坑实战

Java二星级练习卷:高频基础考点与工程避坑实战

2026/8/29 6:09:55

做了这么多年Java开发,也带过不少刚入行的新人,我越来越觉得一个朴素但很有用的道理:大部分Java工程师的基础功底,并不是靠刷了几个框架就扎实的。尤其到了面试或者接手老项目的时候,暴露出来的问题往往集中在语言本身…

从OJ代码考古到知识体系构建:算法整理、重构与工程化实践

从OJ代码考古到知识体系构建:算法整理、重构与工程化实践

2026/8/29 6:09:55

简介:本资源是西南科技大学计算机专业师生整理的OJ编程题解代码合集,面向算法初学者、ACM/蓝桥杯备赛学生及数据结构与算法课程学习者,旨在提供经过AC验证的典型题目参考实现,解决自主刷题时思路卡顿、代码调试无从下手等问题。压…

AI自主性安全实践:Agent评测、权限控制与提示词注入防护

AI自主性安全实践:Agent评测、权限控制与提示词注入防护

2026/8/29 6:09:55

看到一个历史学家频繁讨论 AI,技术人的第一反应往往是:又一个外行来预测未来了。但尤瓦尔赫拉利值得例外。他在公开演讲、著作和访谈中反复强调一个判断:AI 不是普通工具,而是历史上第一个能够自主决策的技术。这句话听起来很哲学…

基于SpringBoot的污水处理关键设备智能预警与能效优化平台设计与实现(程序+文档+讲解)

基于SpringBoot的污水处理关键设备智能预警与能效优化平台设计与实现(程序+文档+讲解)

2026/8/29 6:09:55

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

基于SpringBoot的研学旅行管理系统微信小程序的设计与实现(程序+文档+讲解)

基于SpringBoot的研学旅行管理系统微信小程序的设计与实现(程序+文档+讲解)

2026/8/29 6:09:55

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

法学专业学生亲测:AI写作论文工具能不能用?这4个场景真香

法学专业学生亲测:AI写作论文工具能不能用?这4个场景真香

2026/8/29 5:59:55

"用AI写论文算不算学术不端?"这个问题在法学专业的课堂上已经吵了三年。2026年,答案逐渐清晰:中国政法大学、华东政法大学等多所高校陆续出台规定,允许AI辅助写作但要求声明使用范围。作为一个刚刚用AI工具辅助完成学年…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/28 7:34:42

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

四款热门降AI工具测评:研究生和本科生怎么选?

四款热门降AI工具测评:研究生和本科生怎么选?

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

论文降AI率免费攻略:自查、提示词与工具推荐

论文降AI率免费攻略:自查、提示词与工具推荐

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

2026/8/29 0:09:39

前言:预算有限的企业更关心投入能否形成可持续的品牌资产。评估北京GEO优化服务商时,不能只比较单篇内容或单月报价,还要看是否能够把问题词、官网、信源和监测串成完整链路。本期重点放在预算配置、试点范围和交付边界,帮助企业先…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…