让 CDN 更省流量的 Brotli 算法详解

时间:2022-08-31 23:18:16

早年,我还是学生的时候,时常会鼓捣自己的个人网站,其中最困扰我的问题就是源站服务器易崩溃。作为学生,一方面我没有足够的钱购买高质量的服务器,另一方面一年的流量费用算下来也挺贵的,要花掉我不少的生活费。

同样用户基数大的视频网站每天会面临数据请求、传输等方面的问题,通过正确的方法降低网站流量也可以让网站节省成本。

那么到底有没有好的办法可以帮助我们减少网站流量开支,降低源站服务器的压力?

价格更低的 CDN

这几年 CDN 价格越来越低,让我找到了完美的解决方法。一般来说,网站开启 CDN 加速之后,会将网站内容缓存到 CDN 节点服务器上,这个时候如果有访问的话,就会直接从 CDN 节点服务器返回网站数据,不需要再从源站调取数据。

这个方法解决了源站老是崩溃的问题,同时 CDN 流量价格比源站流量价格低很多,只要设置得当,可以比较不错的减少网站在流量上的开支。

技术含量更高的 CDN

除了价格降低之外,CDN 的技术含量这几年也越来越高,本文就以 又拍云 CDN 的 Brotli 压缩算法为例,讲讲它是如何做到减少流量消耗的。

Google 认为互联网用户的时间是宝贵,尤其不应该浪费在无用的网页加载中,因此推出了无损压缩算法 Brotli。Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩。

更高的压缩率

让 CDN 更省流量的 Brotli 算法详解

△ 图片来自网络

通过上图,我们可以看到 Brotli 与常用的压缩算法 bzip2、gzip、lzma2 对比,压缩比上有明显的优势。

更快的解压缩速度

对于现在的互联网来说,最重要的性能可能是解压缩速度。即使在浏览器和移动设备等资源有限的情况下,客户端能够快速解压,有更良好的用户体验是现在所追求的。而在解压缩速度上,Brotli 依旧表现出色。

让 CDN 更省流量的 Brotli 算法详解

△ 图片来自网络

图中我们看到 Brotli 的解压缩速度与 Gzip 非常相似,但是远远超出 bzip2 和 lzma2,尽管它们相较于 Gzip 有更好的压缩比,但是它们解压缩的速度要慢几倍,和 Brotli 一比,他们的优势消失殆尽。

与现在的常用压缩算法比,Brotli 的优势尽显无疑。与 Gzip 相比在 Web 资源压缩方面,Brotli的压缩性能提升了 17%-25%。当 Brotli 压缩级别为1时,压缩率比 Gzip 压缩最高等级为 9 时还要高。

浏览器兼容

Brotli 算法凭借它优异的压缩性能,在行业内迅速普及,到目前为止,除了 IE 和 Opera Mini之外,几乎所有的主流浏览器都已支持 Brotli 算法。

让 CDN 更省流量的 Brotli 算法详解

△ Brotli 算法支持情况

随着 CDN 技术的不断成熟,合理利用 CDN 可以大大降低源站服务器遇到的并发压力,减少源站流量,节省开支。同时现在 CDN 的防 D 手段也在发展,我们也不用担心因为 DDoS 攻击而“破产”(当年因为这个一直不敢用 CDN,哈哈)。

关于如何使用 Brotli 压缩算法,这个不用操心。又拍云 CDN 默认支持 Brotli 压缩算法,只需要接入 CDN 就可以使用高性能的Web资源压缩算法了。由于并非所有的浏览器都支持 Brotli 算法,所以在 CDN 边缘节点,又拍云会同时提供通过 Brotli 算法压缩的文件和原始资源文件。当客户端不支持 Brotli 算法时,又拍云会选择提供 Gzip 算法来压缩原始文件并提供给客户端。当客户端同时支持两种算法时,又拍云 CDN 会优先响应 br 版本文件。

借助压缩效率更高的 Brotli 算法,对比 Gzip 压缩 CDN 流量再减少 20%,在节约流量成本的同时,让用户有更好的使用体验,的确是一个不错的选择。

 

推荐阅读:

HTTPS 安全级别检测 免费 SSL 证书领取入口

启用 Brotli 压缩算法,对比 Gzip 压缩 CDN 流量再减少 20%

让 CDN 更省流量的 Brotli 算法详解的更多相关文章

  1. BM算法  Boyer-Moore高质量实现代码详解与算法详解

    Boyer-Moore高质量实现代码详解与算法详解 鉴于我见到对算法本身分析非常透彻的文章以及实现的非常精巧的文章,所以就转载了,本文的贡献在于将两者结合起来,方便大家了解代码实现! 算法详解转自:h ...

  2. 机器学习经典算法详解及Python实现--基于SMO的SVM分类器

    原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector  ...

  3. 【转】AC算法详解

    原文转自:http://blog.csdn.net/joylnwang/article/details/6793192 AC算法是Alfred V.Aho(<编译原理>(龙书)的作者),和 ...

  4. EM算法详解

    EM算法详解 1 极大似然估计 假设有如图1的X所示的抽取的n个学生某门课程的成绩,又知学生的成绩符合高斯分布f(x|μ,σ2),求学生的成绩最符合哪种高斯分布,即μ和σ2最优值是什么? 图1 学生成 ...

  5. 【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?

    简介 Floyd-Warshall算法(Floyd-Warshall algorithm),是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以 ...

  6. 安全体系(一)—— DES算法详解

    本文主要介绍了DES算法的步骤,包括IP置换.密钥置换.E扩展置换.S盒代替.P盒置换和末置换. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(二)——RSA算 ...

  7. 第三十一节,目标检测算法之 Faster R-CNN算法详解

    Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...

  8. 第二十九节,目标检测算法之R-CNN算法详解

    Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmenta ...

  9. SILC超像素分割算法详解&lpar;附Python代码&rpar;

    SILC算法详解 一.原理介绍 SLIC算法是simple linear iterative cluster的简称,该算法用来生成超像素(superpixel) 算法步骤: 已知一副图像大小M*N,可 ...

随机推荐

  1. ubuntu 安装配置ssh

    1.安装ssh-server sudo apt-get install openssh-server 2.设置管理员密码访问 sudo vim /etc/ssh/sshd_config 将“Permi ...

  2. MongoDB的学习--文档的查询

    继续关于<MongoDB权威指南>记录,今天的内容是文档的查询~~ MongoDB官网地址:http://www.mongodb.org/ 我使用的是MongoDB 2.4.8 find函 ...

  3. BZOJ 1800 fly-飞行棋

           这道题其实考察的就是从其中能找到几条直径,因为这次数据范围比较小,所以只需设一个二维数组,记录一下每个点及每个点从零开始的位置,最后定一个变量记录周长,最后用个循环搜一下位置小于周长一半 ...

  4. CoreJava&lowbar;Collection接口add有一个返回值!

        今天讨论与朋友小知识,我发现很多人不知道collection接口定义add方法返回的值,我们所有的工作很多年Java职工.不熟悉的公共接口,使自己成为在细节上的麻烦.一个小采访这让我想起,当我 ...

  5. Java-IO流之转换流的使用和编码与解码原理

    一.理论: 1.字符流和字节流区别是什么? 字符流=字节流+编码集,在实际读取的时候其实字符流还是按照字节来读取,但是会更具编码集进行查找编码集字典解析相应的字节,使得一次读取出一个字符: 2.什么是 ...

  6. Python字典、集合之高山流水

    字典dict字典是由大括号{键:值}组成.字典是无序的.字典的键必须是不可变数据类型.不能使用列表作为键,但可以使用元祖作为字典的键.例如: dict_ = {"test":&qu ...

  7. 绕过阿里云waf进行SQL注入

    做个笔记吧,某SQL注入点的绕过,有阿里云waf的. 首先遇到是个搜索框的注入点: 演示下: 针对搜索框,我们的sql语句一般是怎么写的? 本地演示:select * from product whe ...

  8. WPF InkCanvas 书写毛笔效果

    https://www.cnblogs.com/younShieh/p/10602787.html

  9. c&num; 跨域api

    前端 ajax get请求 $.ajax({ url: "API地址", type: 'get', dataType: 'jsonp', async: true, processD ...

  10. pos机代理行业

        传统模式(代理):代理商线性分润,代理商或营运商给一代大量的机器及要求,而且这个要求公对公结算(必须要有公司),分润也是直接给一代.然后一代找二代推广,层层发展.这样你会很担心你的上家的上家突 ...