案例库 · 软件与 IT · 技术决策 · 2015–2018
Brotli让网页更小,解码器直接内置在Chrome中
谷歌的LZ77加上下文模型编码器比gzip小约20%,并且已经内置在浏览器中
那一手
HTTP压缩在gzip上实际上冻结了二十年:每个浏览器和服务器都支持它,但其1992年的设计留下了明显的改进空间。谷歌的Jyrki Alakuijala和Zoltan Szabadka设计了Brotli来缩小这个差距。
RFC 7932将Brotli定义为一种无损格式,结合了LZ77反向引用和Huffman编码,并带有上下文建模和静态字典,其压缩效率堪比当时最好的通用方法——在典型网页文本上比gzip小约20%。
与WebP一样,采用的关键在于分发:Brotli的解码器内置在Chrome中,后来也出现在Firefox和Safari中,因此网页服务器可以在客户端声明支持的那一刻就开始提供Brotli。MDN将其记录为标准端到端HTTP压缩选项,CDN、WordPress和nginx也都采用了它。
为什么管用
- 浏览器内置解码器意味着访客零障碍,并且立即有需求端支持
- RFC精确规定了格式,因此独立的编码器和解码器能够互操作
- 针对网页文本优化的静态字典带来了超越通用LZ77的实际收益
- CPU成本的下降使服务器能够负担更重的编码,而客户端解码成本很低
值了多少LZ77加上下文建模,解码器内置在浏览器中聪明
可以搬走什么
当客户端生态就绪时,替代品才能胜出:发布规范,在主流浏览器中内置解码器,服务器就会一夜之间采用。
后来呢
Brotli成为各大CDN、Web框架和静态托管服务默认的文本压缩选择,其后续工作也继续在谷歌同一压缩团队中进行。gzip仍然是基线,但Brotli定义了现代HTTP传输大小的上限。
资料来源
发现哪里写错了?告诉我们。