对比
Brotli 与 Zstandard
Brotli 和 Zstandard(zstd)是不同的无损数据流格式。Brotli 可作为 HTTP 内容编码 br;Zstandard 支持可配置帧压缩、流式处理和字典工作流。
应该选择哪种格式?
采用 Brotli 的 Web 文本预压缩方案可考虑 Brotli。应用间数据交换或需要可调级别和字典时,可在两端均支持的前提下考虑 zstd。用实际数据测试客户端支持、存储和压缩成本。
适用于 Brotli
保存无损压缩数据流 · 为兼容的 HTTP 传输压缩内容
- 服务器和客户端均支持 Brotli 时预压缩 Web 文本
- 在支持 Brotli 的工具间交换压缩数据
适用于 Zstandard
无损压缩文件和数据流 · 压缩软件包和数据传输
- 发送和接收端都支持 zstd 时调整速度与压缩率
- 流式处理或使用字典压缩
基本信息
| 项目 | Brotli | Zstandard |
|---|---|---|
| 扩展名 | .br | .zst |
| MIME 类型 | application/octet-stream | application/zstd |
| 常见用途 | 保存无损压缩数据流 · 为兼容的 HTTP 传输压缩内容 | 无损压缩文件和数据流 · 压缩软件包和数据传输 |
| 打开方式 | 使用支持 Brotli 的解压工具或库。发送预压缩文件时,对兼容请求设置 Content-Encoding: br,并检查文件命名、媒体类型和缓存配置。 | 使用支持 zstd 的解压工具或库。处理未知压缩文件前,请检查来源、解压后大小和可用内存。 |
| 导出或转换 | 转换为 gzip 或 zstd 时先解压再重新压缩。用校验和或内容比较验证输出,并测量大小、编码时间和接收端支持。不要仅凭 .br 扩展名推断 HTTP 标头或内容。 | 转换为 gzip 或 xz 时,先解压再重新压缩。之后比较文件内容或校验和,并考虑大小、耗时和接收端兼容性。tar.zst 是 tar 归档再经 zstd 压缩的组合;单独的 .zst 不是归档格式。 |
按用途选择
服务器和客户端均支持 Brotli 时预压缩 Web 文本
保存无损压缩数据流 · 为兼容的 HTTP 传输压缩内容
Brotli在支持 Brotli 的工具间交换压缩数据
保存无损压缩数据流 · 为兼容的 HTTP 传输压缩内容
Brotli发送和接收端都支持 zstd 时调整速度与压缩率
无损压缩文件和数据流 · 压缩软件包和数据传输
Zstandard流式处理或使用字典压缩
无损压缩文件和数据流 · 压缩软件包和数据传输
Zstandard关键点 1
两种格式的字节编码不兼容;转换需要先解压再重新压缩。
进一步了解差异关键点 2
Brotli 可用 HTTP Content-Encoding: br 或预压缩 .br 文件提供。Zstandard 注册了 application/zstd 媒体类型,接收端需要支持 zstd。
进一步了解差异进一步了解差异
根据交付协议和接收工具选择,不要假设某种总是更小或更快。两者都是数据流压缩而非多文件归档;使用字典时,需让解码端知道同一字典。
- Brotli 与 zstd 使用不同的数据流结构,不能直接解码对方的数据。
- Brotli 常用于 Web 内容编码;Zstandard 可调节压缩级别,并能在适用场景使用可选字典。
- 压缩率和速度取决于内容、设置和实现。转换时先解码再重新编码,并验证输出完整性。
常见问题
可以把 .br 文件改名为 .zst 吗?
不可以。改名不会转换压缩数据;需要先解压,再用 zstd 编码器重新压缩。