让CDN更省流量的Brotli算法详解
早年,我还是学生的时候,时常会鼓捣自己的个人网站,其中最困扰我的问题就是源站服务器易崩溃。作为学生,一方面我没有足够的钱购买高质量的服务器,另一方面一年的流量费用算下来也挺贵的,要花掉我不少的生活费。
同样用户基数大的视频网站每天会面临数据请求、传输等方面的问题,通过正确的方法降低网站流量也可以让网站节省成本。
那么到底有没有好的办法可以帮助我们减少网站流量开支,降低源站服务器的压力?
价格更低的 CDN
这几年 CDN 价格越来越低,让我找到了完美的解决方法。一般来说,网站开启 CDN 加速之后,会将网站内容缓存到 CDN 节点服务器上,这个时候如果有访问的话,就会直接从 CDN 节点服务器返回网站数据,不需要再从源站调取数据。
这个方法解决了源站老是崩溃的问题,同时 CDN 流量价格比源站流量价格低很多,只要设置得当,可以比较不错的减少网站在流量上的开支。
技术含量更高的 CDN
除了价格降低之外,CDN 的技术含量这几年也越来越高,本文就以又拍云 CDN 的 Brotli 压缩算法为例,讲讲它是如何做到减少流量消耗的。
Google 认为互联网用户的时间是宝贵,尤其不应该浪费在无用的网页加载中,因此推出了无损压缩算法 Brotli。Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩。
更高的压缩率
通过上图,我们可以看到 Brotli 与常用的压缩算法 bzip2、gzip、lzma2 对比,压缩比上有明显的优势。
更快的解压缩速度
对于现在的互联网来说,最重要的性能可能是解压缩速度。即使在浏览器和移动设备等资源有限的情况下,客户端能够快速解压,有更良好的用户体验是现在所追求的。而在解压缩速度上,Brotli 依旧表现出色。
图中我们看到 Brotli 的解压缩速度与 Gzip 非常相似,但是远远超出 bzip2 和 lzma2,尽管它们相较于 Gzip 有更好的压缩比,但是它们解压缩的速度要慢几倍,和 Brotli 一比,他们的优势消失殆尽。
与现在的常用压缩算法比,Brotli 的优势尽显无疑。与 Gzip 相比在 Web 资源压缩方面,Brotli的压缩性能提升了 17%-25%。当 Brotli 压缩级别为1时,压缩率比 Gzip 压缩最高等级为 9 时还要高。
浏览器兼容
Brotli 算法凭借它优异的压缩性能,在行业内迅速普及,到目前为止,除了 IE 和 Opera Mini之外,几乎所有的主流浏览器都已支持 Brotli 算法。
随着 CDN 技术的不断成熟,合理利用 CDN 可以大大降低源站服务器遇到的并发压力,减少源站流量,节省开支。同时现在 CDN 的防 D 手段也在发展,我们也不用担心因为 DDoS 攻击而“破产”(当年因为这个一直不敢用 CDN,哈哈)。