又拍云 CDN 支持了 Brotli 了!

​前言

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

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

测试的 URL 为:

https://wuxuejun.charmelady.net/test.js(访问域名经过又拍云 CDN 进行加速)

抓包结果如下截图所示:

 通过 FireFox 开发者工具抓包测试 Brotli 算法,测试结果为:

1)通过请求头信息 Accept-Encoding:gzip, deflate, br 可以得知,该版本的 FireFox 浏览器支持 Brotli 压缩算法 ;

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

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

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

  • Gzip 压缩

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

  • Brotli 压缩

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 依然提供了非常高的压缩率;

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

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

支持 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

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注