在之前测试HTTP应答的压缩过程中无意间发现在Google浏览器下出现了 Content-Encoding:br 这种的编码格式,当时我就纳闷了,前面不是一直在研究GZip压缩吗?br压缩又是什么鬼?查了一圈资料才发现 br 居然是比 Gzip 压缩率更高的算法,接下来我们就来具体看看。
二.什么是br(Brotli)算法
Google 认为互联网用户的时间是宝贵的,他们的时间不应该消耗在漫长的网页加载中,因此在 2015 年 9 月 Google 推出了无损压缩算法 Brotli。Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压塑压缩效率。启用 Brotli 压缩算法,对比 Gzip 压缩 CDN 流量再减少 20%。
根据 Google 发布的研究报告,Brotli 压缩算法具有多个特点,最典型的是以下 3 个:
针对常见的 Web 资源内容,Brotli 的性能相比 Gzip 提高了 17-25%;当 Brotli 压缩级别为 1 时,压缩率比 Gzip 压缩等级为 9(最高)时还要高;在处理不同 HTML 文档时,Brotli 依然能够提供非常高的压缩率。Brotli 凭借它优异的压缩性能迅速占领了市场,从下图可以看到,除了 IE 和 Opera Mini 之外,几乎所有的主流浏览器都已支持 Brotli 算法。
三.如何使用Brotli算法
和 Gzip 压缩算法一样,Brotli 压缩算法也是免费开放给又拍云 CDN 平台上的所有用户,同时该特性已默认开启。
使用又拍云 CDN Brotli 压缩算法需要同时满足三个条件:
Content-Type 满足如下 MIME 列表:text/plaintext/javascripttext/csstext/xmltext/x-componentapplication/javascriptapplication/x-javascriptapplication/xmlapplication/jsonapplication/xhtml+xmlapplication/rss+xmlapplication/atom+xmlapplication/x-font-ttfapplication/vnd.ms-fontobjectimage/svg+xmlimage/x-iconfont/opentypetext/html -- defaultContent-Length 大于 256 字节客户端请求头需携带 Accept-Encoding: br