Google 认为互联网用户的时间是宝贵的,他们的时间不应该消耗在漫长的网页加载中,因此在 2015 年 9 月 Google 推出了无损压缩算法 Brotli。Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压缩效率。

根据 Google 发布的研究报告,Brotli 压缩算法具有多个特点,典型的是以下 3 个:

  • 针对常见的 Web 资源内容,Brotli 的性能相比 Gzip 提高了 17-25%;

  • 当 Brotli 压缩级别为 1 时,压缩率比 Gzip 压缩等级为 9时还要高;

  • 在处理不同 HTML 文档时,Brotli 依然能够提供非常高的压缩率。

Brotli 凭借它优异的压缩性能迅速占领了市场,从下图可以看到,除了 IE 和 Opera Mini 之外,几乎所有的主流浏览器都已支持 Brotli 算法。

△ Brotli 算法支持情况

又拍云 CDN 已支持 Brotli压缩算法

之前又拍云已经支持了 Gzip 算法,在优化网站速度方面,又拍云始终不遗余力地进行优化。目前又拍云 CDN 已支持 Brotli 压缩算法,通过对新压缩算法的支持将压缩率提升 20% ,并且帮助降低移动设备的电池使用量,并达到省电、延长电池使用寿命的目的。

如何使用 Brotli 压缩算法

和 Gzip 压缩算法一样,Brotli 压缩算法也是免费开放给又拍云 CDN 平台上的所有用户,同时该特性已默认开启。

使用又拍云 CDN Brotli 压缩算法需要同时满足三个条件:

  • Content-Type 满足如下 MIME 列表:

text/plain
text/javascript
text/css
text/xml
text/x-component
application/javascript
application/x-javascript
application/xml
application/json
application/xhtml+xml
application/rss+xml
application/atom+xml
application/x-font-ttf
application/vnd.ms-fontobject
image/svg+xml
image/x-icon
font/opentype
text/html -- default
  • Content-Length 大于 256 字节

  • 客户端请求头需携带 Accept-Encoding: br

此外由于并非所有的浏览器都支持 Brotli 算法,所以在 CDN 边缘节点,又拍云会同时提供通过 Brotli 算法压缩的文件和原始资源文件。

当客户端不支持 Brotli 算法时,又拍云会选择提供 Gzip 算法来压缩原始文件并提供给客户端。当客户端同时支持两种算法时,又拍云 CDN 会优先响应 br 版本文件。

使用又拍云 CDN 服务,即可免费享受到 Brotli 算法带来的极致压缩体验,欢迎使用。

参考文献:

Google 发布的研究报告:http://www.gstatic.com/b/brotlidocs/brotli-2015-09-22.pdf

Brotli 算法支持情况:http://caniuse.com/#feat=brotli