gzip与brotli压缩算法对比


网传的压缩比

上面这幅图是比各种无损压缩算法的压缩比,其中提到brotli压缩比gzip的要高。最近一直搞新版数图首页的优化,新版数图的首页各种资源加起来有3.6MB
,各种优化手段都使用上,基本上连1个RTT的时延都不想放弃,当然经过有,数图首页的加载时间基本上平均在948ms内。其中利用到阿里云的cdn服务。

阿里云目前的cdn服务开始支持quic协议(实验性质的),目前这个估计是在收集用户数据。和运维的同学一系列的沟通,终于说服他们在这个星期开启了cdn
支持TLS1.3协议并开启brotli压缩算法

浏览器对brotli协议的支持


浏览器对brotli支持情况

从上图可以看出浏览器对brotli的支持还是不错的。

并不是所有的浏览器都支持brotli压缩算法,如果cdn服务同时开启了gzip,brotli压缩算法该怎么办,http协议会帮我们解决这个问题。

当我们向cdn缓存服务请求一个文本资源,如js,css,html资源时,请求头会携带如下信息

accept-encoding: gzip, deflate, br

当服务端收到请求的时候,如果只支持gzip协议,那么响应头会有如下信息

content-encoding: gzip

现在cdn服务商都支持brotli和gzip压缩算法,如阿里云的设置中就添加对brotli的支持。


阿里云对cdn的支持要自己手动开启

但是在自己做对比试验的时候,发现开启brotli压缩算法,并没有比开启gzip算法,在网络上的传输要降低,反而升高了,演示视频如下视频所示。

阿里云 gzip vs brotli对比

阿里云在描述中说b’rotli会提高10-25%的压缩比,但是测试过程的比较如下


原生文件大小 gzip brotli


500KB 186kB 200KB


brotli的压缩比并没有比gzip压缩比高,原因出现在哪呢,个人猜测是因为阿里云cdn服务在设置gzip压缩和brotli压缩的时候,压缩比并不一致。

下面的图片是各种压缩算法的在不同level下的比较

下面的图片是各种压缩算法的在不同level下的比较

不同压缩算法的比较

从图中可以看出brotli vs gzip 的压缩算法
总体来说brotli的总体性能更好,尤其是解压速度。我们在选择brotli算法或gzip时,需要根据实际场景进行调优


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!