[关闭]
@wuxuejun 2017-11-22T02:45:52.000000Z 字数 2295 阅读 1205

又拍云 CDN 现在支持 Brotli 算法


前言

我们在此宣布,又拍云 CDN 现在支持 Brotli 了。我们之前已经支持了 Gzip 算法,但在优化网站速度方面,我们始终不遗余力的进行着新算法的支持和兼容优化。Google 的 Brotli 压缩算法将提升压缩率 20% ,从而可以使用户在不增加 CPU 消耗的情况下提升页面的加载速度,可以给用户带来更好的使用体验。

下面我们进行一些简单的测试,来验证 Brotli 的支持情况,这里我们使用 FireFox 浏览器(版本 56.0.2)的开发者工具来抓包测试:

1)通过 FireFox 56.0.2 发起请求,如截图所示:

待上传

通过请求头信息 Accept-Encoding:gzip, deflate, br 可以得知,该版本的 FireFox 浏览器支持 Brotli 。

2) 又拍云 CDN 支持 Brotli ,可以通过响应头可以得知 CDN 边缘节点响应了一个 br 版本的资源文件,响应头内容为 Content-Encoding: br

3)原始资源文件大小为 702KB,通过 Brotli 压缩之后的大小变为了 226.5KB,压缩比为 32.2%。

当然您也可以通过命令 Curl 来发起请求来进行测试,比如:

curl -vo /dev/null https://wuxuejun.charmelady.net/test.js -H "Accept-Encoding: gzip" -w "cost time: %{time_total}\n"

curl -vo /dev/null https://wuxuejun.charmelady.net/test.js -H "Accept-Encoding: br" -w "cost time: %{time_total}\n"

curl -vo /dev/null https://wuxuejun.charmelady.net/test.js -w "cost time: %{time_total}\n"

关于 Brotli

Brotli 是由 Google 于 2015 年 9 月推出的无损压缩算法,它通过用变种的 LZ77 算法,Huffman 编码和二阶文本建模进行数据压缩,是一种压缩比很高的压缩方法。根据 Google 发布的研究报告,Brotli 具有如下特点:

1)针对常见的 Web 资源内容,Brotli 的性能要比 Gzip 好 17-25%;
2) brotli 压缩级别为 1 时,压缩速度是最快的,而且此时压缩率比 gzip 压缩等级为 9(最高)时还要高;
3)在处理不同 HTML 文档时,brotli 依然提供了非常高的压缩率;

参见 Google 研究报告:

http://www.gstatic.com/b/brotlidocs/brotli-2015-09-22.pdf

大多数的客户端浏览器都支持 Gzip 以及 Deflate,但是对 Brotli 的支持客户端也越来越多了,当前浏览器兼容情况如下:

截止 2017年 11 月 6日,全球客户端支持 Brotli 算法的比例达到了 70.79%,参见截图所示:

待上传

实时参照链接:http://caniuse.com/#feat=brotli

支持 Brotli 算法的浏览器支持的内容编码类型为 br , 通过 FireFox 开发者工具抓包可以获知,FireFox 浏览器的会发起这样的请求头内容:

Accept-Encoding:gzip, deflate, br

如果此时服务端(这里特指 CDN 边缘节点)支持 Brotli 算法,则会响应如下响应头:

Content-Encoding: br

如何使用?

Gzip 压缩特性一样,Brotli 免费开放给 CDN 平台的所有用户使用,并且该特性我们默认已经开启。这里需要说明的是,触发 Brotli 需要同时满足如下条件:

1) 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

2)Content-Length 大于 256 字节
3)客户端请求头需携带 Accept-Encoding: br

值得注意的是,并不是所有的浏览器都支持 Brotli 算法,所以在 CDN 边缘节点,我们同时会提供两种文件,一个是通过 Brotli 压缩的文件,一个原始资源文件。在客户端不支持 Brotli 算法时,我们可以提供 Gzip 算法来压缩原始文件并提供给客户端。由此也可以得出,在客户端同时都支持 Brotli 和 Gzip 算法的情况下,我们会优先响应 br 版本的文件。

如果您还不是我们的用户,您可以免费试用我们的 CDN 服务,即可免费测试 Brotli。作为国内首家推出 Brotli 算法的 CDN 厂商,我们希望为互联网用户提供良好的用户体验的同时,力求减少内容提供商的 CDN 采购成本。

参考

1)https://en.wikipedia.org/wiki/Brotli

2)http://www.gstatic.com/b/brotlidocs/brotli-2015-09-22.pdf

3)http://caniuse.com/#feat=brotli

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注