Brotli是什么鬼?

沉迷于工作太久,以至于对新技术的了解已经开始落后了,比如 Brotli,第一感觉是:这是什么鬼?

Brotli是什么鬼?

简而言之: Brotli就是一个类似Gzip的压缩算法

Brotli 是Google 工程师 Jyrki Alakuijala 和 Zoltán Szabadka 开发的一个压缩算法。Brotli最早被用于做压缩 WOFF2 网络字体的大小,后来才被用作网站静态内容压缩。

时间轴

  1. 2013年,Brotli第一个版本被用来压缩 WOFF2 网络字体
  2. 2015年, Google 推出重写了编码器版本的 Brotli,并将之作为 HTTP压缩的增强工具
  3. 2016年, IETF将 Brotli 列为标准草案(RFC 7932

Brotli 比Gzip更强吗?

是的

Javascript : 比 gzip小 14%
HTML : 比 gzip小 21%
CSS : 比 gzip小 17%
via brotli performance

Brotli 是万能的吗?

当然不是

Brotli对静态内容效果很好,但对于动态压缩效果并不太好:

根据OpenCPU - Compression Benchmarks: brotli, gzip, xz, bz2 的测试结果,Brotli 的压缩时间比gzip要大太多!

所以对于需要实时压缩的内容,Brotli是非常不适合的。

现在能用了吗?

能!

浏览器支持

看图:

服务器支持

  • nginx: ngx_brotli
  • Apache: mod_brotli
  • Microsoft IIS: 有一个社区版本的 brotli 扩展
  • Node.js 从 11.7 开始内置了 encoder

check是否启用

请求时在Accept-Encoding加上 br

Accept-Encoding: gzip, deflate, br

如果服务器支持,则会返回:

Content-Encoding: br

有什么需要注意的?

Brotli 只支持 HTTPS!
Brotli 只支持 HTTPS!
Brotli 只支持 HTTPS!