Brotli
Brotli 常用于 Web 内容压缩,尤其适合静态文本资源。它在压缩率上通常优于 gzip,但压缩端成本更高。
核心思想
Brotli 结合字典、上下文建模和熵编码,并内置静态字典来改善常见文本内容的压缩效果。
为什么它在 Web 文本上常见
Brotli 的优势很大程度来自它对文本场景的优化:
- 针对常见词片段和模式有静态字典。
- 对 HTML、CSS、JS 这类结构化文本通常更友好。
- 在“预压缩静态资源”场景里,压缩慢一点往往可以接受。
工程取舍
| 维度 | 特点 |
|---|---|
| 压缩速度 | 高级别较慢 |
| 解压速度 | 较快 |
| 压缩率 | 文本和 Web 资源表现好 |
| 内存 | 依质量级别变化 |
| 流式 | 支持 |
常见工程特征
- 很适合在构建阶段提前压好静态资源。
- 在动态实时压缩场景里,要谨慎评估高级别开销。
- 与 Web 分发、CDN、浏览器生态结合较紧密。
适用场景
- Web 静态资源
- 文本内容分发
- 对传输体积敏感的 HTTP 场景
调参时通常先看什么
- 是离线预压缩还是在线实时压缩。
- 质量级别是否值得拉高。
- 资源类型是否确实偏文本而不是二进制块数据。
使用时的常见坑
- 把高质量级别直接用在实时请求路径。
- 用它去处理本就不适合文本字典优化的数据,再得出“Brotli 不行”的结论。
C++ 示例
查看 Brotli C++ 示例。