Gzip之后继者Brotli浅析之CDN厂商的智能压缩,服务器Brotli设置

智能压缩”按照又拍云的说法是,同时支持 Gzip 和 Brotli 压缩算法。根据用于浏览器开启自动选择不同压缩方式。

Gzip 压缩算法

Gzip 基于 DEFLATE 算法,它是 LZ77 和霍夫曼编码的组合,最早用于 UNIX 系统的文件压缩。HTTP 协议上的 Gzip 编码是一种用来进 Web 应用程序性能的技术,Web 服务器和客户端(浏览器)必须共同支持 Gzip,当下主流的浏览器都是支持 Gzip 压缩,包括 IE6、IE7、IE8、IE9、FireFox、Google Chrome、Opera 等。

Brotli 压缩算法

Google 认为互联网用户的时间是宝贵,尤其不应该浪费在无用的网页加载中。

2013年,他们发布了 Zotfli 压缩算法。该算法在默认设置下的输出比 zlib 的最大压缩比输出还要小 3-8%。PNG 优化器、Web 内容预处理等许多压缩方案中都集成了该算法。基于该算法的应用情况,于 2015 年 9 月推出了无损压缩算法 Brotli,最初用于用于网络字体的离线压缩。该算法由谷歌压缩团队的 Jyrki Alakuijala 和 Zoltan Szabadka 开发,其中 Jyrki 亦是 Zotfli 压缩算法的创建者。

2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式API已被改进,增加更多压缩质量级别。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。

Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压缩效率

与常见的通用压缩算法不同,Brotli使用一个预定义的120千字节字典。该字典包含超过13000个常用单词、短语和其他子字符串,这些来自一个文本和HTML文档的大型语料库。预定义的算法可以提升较小文件的压缩密度。

使用brotli替换deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。

Brotli 压缩算法具有多个特点,最典型的是以下 3 个:

针对常见的 Web 资源内容,Brotli 的性能相比 Gzip 提高了 17-25%;

当 Brotli 压缩级别为 1 时,压缩率比 Gzip 压缩等级为 9(最高)时还要高;

在处理不同 HTML 文档时,Brotli 依然能够提供非常高的压缩率。

比其他算法提供更快的解压与压缩算法

Brotli算法与其他算法压缩比率对比

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

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

Brotli 算法和其他算法的性能比较:

https://cran.r-project.org/web/packages/brotli/vignettes/benchmarks.html

https://hacks.mozilla.org/2015/11/better-than-gzip-compression-with-brotli

服务器支持Brotli压缩算法

支持Brotli压缩算法的浏览器使用的内容编码类型为br

http请求头:Accept-Encoding: gzip, deflate, sdch, br

http返回头:Content-Encoding: br

在Nginx上启用Brotli

nginx目前并不支持Brotli算法,需要使用第三方模块,例如ngx_brotli进行实现。https://github.com/google/ngx_brotli

下面是简单的安装步骤。

git clone https://github.com/google/ngx_brotli

cd ngx_brotli

git submodule update --init

cd /path/to/nginx_source/

./configure --add-module=/path/to/ngx_brotli

make && make install

Nginx配置文件的http块下增加以下指令:

brotli               on;  

brotli_comp_level    6;  

brotli_buffers       16 8k;  

brotli_min_length    20;  

brotli_types         *;

nginx brotli模块指令解析

brotli_static:启用后将会检查是否存在带有br扩展的预先压缩过的文件。如果值为always,则总是使用压缩过的文件,而不判断浏览器是否支持。

brotli:是否启用在on-the-fly方式压缩文件,启用后,将会在响应时对文件进行压缩并返回。

brotli_types:指定对哪些内容编码类型进行压缩。text/html内容总是会被进行压缩。

brotli_buffers:设置缓冲的数量和大小。大小默认为一个内存页的大小,也就是4k或者8k。

brotli_comp_level:设置压缩质量等级。取值范围是0到11.

brotli_window:设置窗口大小。

brotli_min_length:设置需要进行压缩的最小响应大小。

现在贴吧化的知乎,就使用了brotli

相关文章:

Google 开源 Brotli 压缩算法https://www.infoq.cn/article/2015/10/Google-Brotli-Zotfli/

智能压缩,摆脱用 Gzip 还是 Brotli 的纠结https://www.jianshu.com/p/94a153630de4

让 CDN 更省流量的 Brotli 算法详解https://www.jianshu.com/p/45c95bdf4f0c

使用Brotli提高网站访问速度https://segmentfault.com/a/1190000009374437

在ASP.NET Core中使用brotli压缩https://www.cnblogs.com/shanyou/p/9154816.html

转载本站文章《Gzip之后继者Brotli浅析之CDN厂商的智能压缩,服务器Brotli设置》,

请注明出处:https://www.zhoulujun.cn/html/webfront/SGML/web/2020_0125_8255.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,881评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,052评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,598评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,407评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,823评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,872评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,037评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,778评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,505评论 1 247
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,745评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,233评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,231评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,141评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,939评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,954评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,784评论 2 275

推荐阅读更多精彩内容