Format Atlas

对比

Brotli 与 Zstandard

Brotli 和 Zstandard(zstd)是不同的无损数据流格式。Brotli 可作为 HTTP 内容编码 br;Zstandard 支持可配置帧压缩、流式处理和字典工作流。

应该选择哪种格式?

采用 Brotli 的 Web 文本预压缩方案可考虑 Brotli。应用间数据交换或需要可调级别和字典时,可在两端均支持的前提下考虑 zstd。用实际数据测试客户端支持、存储和压缩成本。

适用于 Brotli

保存无损压缩数据流 · 为兼容的 HTTP 传输压缩内容

  • 服务器和客户端均支持 Brotli 时预压缩 Web 文本
  • 在支持 Brotli 的工具间交换压缩数据

适用于 Zstandard

无损压缩文件和数据流 · 压缩软件包和数据传输

  • 发送和接收端都支持 zstd 时调整速度与压缩率
  • 流式处理或使用字典压缩

基本信息

项目BrotliZstandard
扩展名.br.zst
MIME 类型application/octet-streamapplication/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 编码器重新压缩。

了解详情

参考资料与规范