最新消息:20210917 已从crifan.com换到crifan.org

【记录】Brotli 压缩算法

算法 crifan 1406浏览 0评论
折腾:
【记录】CloudFlare中新增crifan.com站点并开启CDN
期间,对于CloudFlare中快速入门指南中,出现一个:
Brotli
应用 Brotli 压缩,加快访问者的 HTTPS 流量的页面加载时间。
去搜一下
Brotli 压缩
新的开源压缩算法Brotli – 知乎 (zhihu.com)
Brotli是一种开源的压缩算法,可以让数据在互联网上以更快的速度传输。
2015年9月谷歌发布了Brotli压缩算法,直到现在才开始被大多数的浏览器所兼容。
现在最新的HTTP服务器程序Apache和nginx也支持了Brotli压缩算法,谷歌和一些商业公司也开始对Brotli提供支持服务。和谷歌的gzip解压缩格式比起来,Brotli能在此基础上将数据在压缩20~25%。
Cloudflare公司的工程师们为了验证Brotli压缩算法比其他压缩算法更好,还特意做了实验来说明
还有http://Discouse.org的联合创始人Sam Saffron给各种压缩算法的文件压缩大小和压缩速度打分,事后证明Brotli不仅全面吊打其他压缩算法,还能支持HTTPS网络加密下的压缩。
当然目前还有一些浏览器并不支持这种压缩算法,比如苹果的safari浏览器,微软也只有Edge浏览器才支持,老旧的IE并不支持,而且微软自家的web server套件IIS目前还没有免费的插件可以支持Brotli压缩,这就意味着使用IIS作为web server的网站也不无法支持Brotli压缩传输。
用户如果想要检查网站是否使用了Brotli压缩进行传输,可以在浏览器的页面解码的头部分,会看到br:
Brotli压缩 – 全站加速 – 阿里云 (aliyun.com)
当您需要对静态文本文件进行压缩时,可以开启此功能,有效减小传输内容大小,加速分发效果
背景信息
Brotli是开源的一种新型压缩算法。开启Brotli压缩功能后,全站加速节点返回请求资源时,会对HTML、JS、CSS等文本文件进行Brotli压缩。压缩文本文件时Brotli压缩比Gzip压缩性能提升约15%~25%。

客户端请求携带请求头Accept-Encoding: br:客户端希望获取对应资源时进行Brotli压缩。
服务端响应携带响应头Content-Encoding: br:服务端响应的内容是Brotli压缩的资源。
智能压缩,摆脱用 Gzip 还是 Brotli 的纠结 – 知乎 (zhihu.com)
  • Gzip 压缩算法
    • Gzip 基于 DEFLATE 算法,它是 LZ77 和霍夫曼编码的组合,最早用于 UNIX 系统的文件压缩。HTTP 协议上的 Gzip 编码是一种用来进 Web 应用程序性能的技术,Web 服务器和客户端(浏览器)必须共同支持 Gzip,当下主流的浏览器都是支持 Gzip 压缩,包括 IE6、IE7、IE8、IE9、FireFox、Google Chrome、Opera 等。
  • Brotli 压缩算法
    • Google 在 2015 年 9 月推出了无损压缩算法 Brotli。Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压缩效率。
    • Brotli 压缩算法具有多个特点,最典型的是以下 3 个:
      • * 针对常见的 Web 资源内容,Brotli 的性能相比 Gzip 提高了 17-25%;
      • * 当 Brotli 压缩级别为 1 时,压缩率比 Gzip 压缩等级为 9(最高)时还要高;
      • * 在处理不同 HTML 文档时,Brotli 依然能够提供非常高的压缩率。
另外,除了 IE 和 Opera Mini 之外,几乎所有的主流浏览器都已支持 Brotli 算法。
所以:放心用。不用担心还有哪些浏览器不支持。
在同时开启 Gzip 和 Brotli 压缩算法时,Brotli 压缩等级优先级高于 Gzip ,当客户端同时支持两种压缩算法的情况下,会优先返回 Brotli 版本的资源文件。上图中,同时开启了 Gzip 和 Brotli,但使用的压缩算法是 Brotli,压缩等级为 5
对比:
  • △ 未开启前:将 Gzip 和 Brotli 特性关闭
  • △ 开启后:将 Gzip 和 Brotli 同时开启,压缩等级设置为 5
结论:
放心用。

转载请注明:在路上 » 【记录】Brotli 压缩算法

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
97 queries in 0.182 seconds, using 23.28MB memory