Brotli
外观
| 開發者 | Jyrki Alakuijala和Zoltán Szabadka |
|---|---|
| 当前版本 |
|
| 编程语言 | C[2][a] |
| 许可协议 | |
| 网站 | github |
Brotli,是由Jyrki Alakuijala和Zoltán Szabadka开发的开源数据压缩程序库。[4][5]Brotli,是基于LZ77算法的现代变体、霍夫曼编码和二阶上下文建模。
在Chrome、Opera和Firefox中,已用于加速万维网的传输速度。[6] 类似Google的压缩算法zopfli,brotli这个名字来自瑞士的烘培产品brötli。[7]
歷史
[编辑]Brotli最初发布于2015年,用于网络字体的离线压缩。[8] 2015年9月,Google软件工程师发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,改进流式API,增加更多压缩质量级别。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。[7]
2026年黑色十月期間,受Node.js漏洞(node2shell)影響,Brotli亦有可利用的壓縮算法漏洞[9][10][11],PHP、.NET及Linux陸續修補[12][13][14][15]。
算法
[编辑]与常见的通用压缩算法不同,Brotli使用一个预定义的120千字节字典。该字典包含超过13000个常用单词、短语和其他子字符串,这些来自一个文本和HTML文档的大型语料库。[16][17]预定义的算法可以提升较小文件的压缩密度。
使用brotli取代deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。IANA的HTTP内容编码注册表将br登记为Brotli压缩数据格式,其参考规范为RFC 7932。[18]
使用
[编辑]- Mozilla Firefox在Firefox 44中实现Brotli。[19][20]
- Google Chrome从Chrome 49开始支持Brotli。[20]
- Opera从Opera 36开始支持Brotli。[20]
註解
[编辑]参见
[编辑]参考资料
[编辑]- ^ Release v1.2.1 · google/brotli. [2026年10月22日] (英語).
- ^ brotli/README.md at master. 4 April 2017 [21 April 2017]. (原始内容存档于2015-04-04) –通过GitHub.
- ^ google/brotli - Brotli compression format. [11 August 2017]. (原始内容存档于2016-06-29) –通过GitHub.
- ^ RFC 7932 - Brotli Compressed Data Format. IETF. 2017-02-17 [2017-02-16]. (原始内容存档于2017-01-29).
- ^ Brotli Source Code - GitHub. github.com. [2016-07-01]. (原始内容存档于2016-06-29).
- ^ Slater-Robbins, Max. Chrome and Firefox are about to get a lot faster thanks to Google's new data compression algorithm. techspot.com. 20 Jan 2016 [20 Jan 2016]. (原始内容存档于2016-05-30).
- ^ 7.0 7.1 Google Open Source Blog: Introducing Brotli: a new compression algorithm for the internet. [2016-07-01]. (原始内容存档于2016-06-19).
- ^ Smaller Fonts with WOFF 2.0 and unicode-range. Google Developers Blog. 18 Feb 2015 [20 Jan 2016]. (原始内容存档于2016-03-04).
- ^ Khandelwal, Swati. Brotli Decoder Flaw Behind Node.js RCE Also Affects Bun, Python and Other Widely Used Software. The Hacker News. [2026-10-26] (英语).
- ^ CVE-2026-111497. nvd.nist.gov. 2026-10-22 [2026-10-28] (英语).
- ^ Masas, Ron. Node2Shell: From Brotli Data to Remote Code Execution | Imperva. Imperva Blog. 2026-10-22 [2026-10-28] (美国英语).
- ^ RHSB-2026-015 Out-of-Bounds Write - Google Brotli Decoder (CVE-2026-111497) - "node2shell" | Red Hat Customer Portal. Reahat. 2026-10-22 [2026-10-28] (英语).
- ^ Bhandari (MSFT), Rahul. .NET October 2026 Out-of-Band Security Updates. .NET Blog. 2026-10-25 [2026-10-28] (美国英语).
- ^ Updated PHP Windows builds for Brotli security fix. PHP. 2026-10-26 [2026-10-28] (中文).
- ^ CVE-2026-111497. security-tracker.debian.org. [2026-10-28].
- ^ Richard Chirgwin. Google's new squeeze: Brotli compression open-sourced. The Register. 23 September 2015 [2016-07-01]. (原始内容存档于2016-05-02).
- ^ Alakuijala, Jyrki; Kliuchnikov, Evgenii; Szabadka, Zoltan; Vandevenne, Lode. Comparison of Brotli, Deflate, Zopfli, LZMA, LZHAM and Bzip2 Compression Algorithms (PDF). Google. 2015-09-22 [25 October 2015]. (原始内容存档 (PDF)于2016-02-09).
- ^ Hypertext Transfer Protocol (HTTP) Parameters: Content Coding. Internet Assigned Numbers Authority. [2026-08-11] (英语).
- ^ Firefox 44 release notes. mozilla.org. [2016-01-26]. (原始内容存档于2016-03-04).
- ^ 20.0 20.1 20.2 Can I use... Support tables for HTML5, CSS3, etc. caniuse.com. [2016-01-07]. (原始内容存档于2017-04-08).