Gzip vs Brotli 压缩算法谁更好?

提升网站加载速度是老生常谈的话题了,本文将从 Gzip 与 Brotli 两种压缩算法入手,去了解这两种压缩算法各自的压缩特点,以及Gzip vs Brotli,谁的压缩效果更好。

Gzip 压缩算法

Gzip 基于 DEFLATE 算法,它是 LZ77 和霍夫曼编码的组合,最早用于 UNIX 系统的文件压缩。HTTP 协议上的 Gzip 编码是一种用来改进 Web 应用程序性能的技术,它要求 Web 服务器和客户端(浏览器)必须共同支持 Gzip。而当下主流的浏览器,包括 IE6、IE7、IE8、IE9、FireFox、Google Chrome、Opera 等都已经开始支持 Gzip 压缩。可见 Gzip 的使用已经成为了互联网发展的必然趋势。

作为 Internet 上使用非常普遍的一种数据压缩格式,Gzip 对一般纯文本内容可压缩到原大小的 40%,这大大减少了网站文件中重复代码和空白的数量。它还可以提供 9 个压缩级别,可以方便使用者微调压缩量和压缩时间。

在用于提高 Web 应用程序的性能这一点上,Gzip 压缩一直是最受欢迎的。直到另一种压缩算法 Brotli 的出现,它成为了 Gzip 最大的竞争对手。

Brotli 压缩算法

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

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

  • 针对常见的 Web 资源内容,Brotli 的性能相比 Gzip 提高了 17-25%;
  • 当 Brotli 压缩级别为 1 时,压缩率比 Gzip 压缩等级为 9(最高)时还要高;
  • 在处理不同 HTML 文档时,Brotli 依然能够提供非常高的压缩率

依靠着自身卓越的压缩性能,Brotli 自推出后就迅速开始占领压缩市场,从下图可以看到,除了 IE 和 Opera Mini 之外,几乎所有的主流浏览器都已支持 Brotli 算法。

Brotli 比 Gzip 更好吗?

显然与 Gzip 相比,Brotli 压缩在研究中显示出了不俗的成果。,例如 Gzip 有 9 个压缩级别,而 Brotli 有 11 个。此外,Brotli 还使用一个预定义的 120 千字节字典,该字典包含超过 13000 个常用单词、短语和其他子字符串。这些因素都有效提高了 Brotli 的压缩率。根据 Certsimple 的研究,用 Brotli 压缩的 Javascript 文件比 Gzip 小 14%,HTML 文件比 Gzip 小 21%,CSS 文件比 Gzip 小 17%。

无论从哪方面看 Gzip 都已经被 Brotli 碾压,两者之间毫无对比的可能性,我们似乎也完全不需要考虑选择左边或者右边。

诚然 Brotli 在压缩程度上有着绝对的优势,但是这些优势是用其他代价换来的。Brotli 压缩操作所花费的时间会随着压缩级别的增加而增加。简而言之,就是 Brotli 需要更多的计算能力,而大家都知道计算能力需求的增加代表着设备和软件设施的成本上涨。另外 Brotli 要求浏览器必须支持与 HTTPS 一起使用,这也是他相比在浏览器支持量上比 Gzip 少的原因。毕竟 Gzip 同时支持 HTTP 和 HTTPS。

一边是压缩效果奇佳但是可能会因为浏览器的不支持而导致用户无法访问网站,另一边则是浏览器支持但是压缩效果稍弱、用户加载网页时间略长,一个两难的抉择出现在了网站运营者面前。

有机灵的小伙伴可能会说:“也不是所有用户都能使用 HTTPS,但是不是有功能判断么?难道压缩算法就不能整一个这种自动判断?让能使用 Brotli 的使用 Brotli,不能的使用 Gzip。”这种技术已经在Cloudflare、腾讯云CDN、又拍云CDN等等国内外各大服务商得到支持。

阅读剩余
THE END