Gzip之后繼者Brotli淺析之CDN廠商的智能壓縮淮摔,服務(wù)器Brotli設(shè)置

智能壓縮”按照又拍云的說法是,同時支持 Gzip 和 Brotli 壓縮算法惨寿。根據(jù)用于瀏覽器開啟自動選擇不同壓縮方式。

Gzip 壓縮算法

Gzip 基于 DEFLATE 算法删窒,它是 LZ77 和霍夫曼編碼的組合裂垦,最早用于 UNIX 系統(tǒng)的文件壓縮。HTTP 協(xié)議上的 Gzip 編碼是一種用來進(jìn) Web 應(yīng)用程序性能的技術(shù)肌索,Web 服務(wù)器和客戶端(瀏覽器)必須共同支持 Gzip蕉拢,當(dāng)下主流的瀏覽器都是支持 Gzip 壓縮,包括 IE6诚亚、IE7晕换、IE8、IE9站宗、FireFox闸准、Google Chrome、Opera 等梢灭。

Brotli 壓縮算法

Google 認(rèn)為互聯(lián)網(wǎng)用戶的時間是寶貴夷家,尤其不應(yīng)該浪費(fèi)在無用的網(wǎng)頁加載中。

2013年或辖,他們發(fā)布了 Zotfli 壓縮算法瘾英。該算法在默認(rèn)設(shè)置下的輸出比 zlib 的最大壓縮比輸出還要小 3-8%。PNG 優(yōu)化器颂暇、Web 內(nèi)容預(yù)處理等許多壓縮方案中都集成了該算法缺谴。基于該算法的應(yīng)用情況耳鸯,于 2015 年 9 月推出了無損壓縮算法 Brotli湿蛔,最初用于用于網(wǎng)絡(luò)字體的離線壓縮。該算法由谷歌壓縮團(tuán)隊的 Jyrki Alakuijala 和 Zoltan Szabadka 開發(fā)县爬,其中 Jyrki 亦是 Zotfli 壓縮算法的創(chuàng)建者阳啥。

2015年9月發(fā)布了包含通用無損數(shù)據(jù)壓縮的Brotli增強(qiáng)版本,特別側(cè)重于HTTP壓縮财喳。其中的編碼器被部分改寫以提高壓縮比察迟,編碼器和解碼器都提高了速度,流式API已被改進(jìn)耳高,增加更多壓縮質(zhì)量級別扎瓶。新版本還展現(xiàn)了跨平臺的性能改進(jìn),以及減少解碼所需的內(nèi)存泌枪。

Brotli 通過變種的 LZ77 算法概荷、Huffman 編碼以及二階文本建模等方式進(jìn)行數(shù)據(jù)壓縮,與其他壓縮算法相比碌燕,它有著更高的壓縮效率误证。

與常見的通用壓縮算法不同继薛,Brotli使用一個預(yù)定義的120千字節(jié)字典。該字典包含超過13000個常用單詞愈捅、短語和其他子字符串遏考,這些來自一個文本和HTML文檔的大型語料庫。預(yù)定義的算法可以提升較小文件的壓縮密度蓝谨。

使用brotli替換deflate來對文本文件壓縮通痴┟螅可以增加20%的壓縮密度,而壓縮與解壓縮速度則大致不變像棘。

Brotli 壓縮算法具有多個特點,最典型的是以下 3 個:

針對常見的 Web 資源內(nèi)容壶冒,Brotli 的性能相比 Gzip 提高了 17-25%缕题;

當(dāng) Brotli 壓縮級別為 1 時,壓縮率比 Gzip 壓縮等級為 9(最高)時還要高胖腾;

在處理不同 HTML 文檔時烟零,Brotli 依然能夠提供非常高的壓縮率。

比其他算法提供更快的解壓與壓縮算法

Brotli算法與其他算法壓縮比率對比

圖一咸作,我們可以看到 Brotli 與常用的壓縮算法 bzip2锨阿、gzip、lzma2 對比记罚,壓縮比上有明顯的優(yōu)勢墅诡。

圖二,我們看到 Brotli 的解壓縮速度與 Gzip 非常相似桐智,但是遠(yuǎn)遠(yuǎn)超出 bzip2 和 lzma2末早,盡管它們相較于 Gzip 有更好的壓縮比,但是它們解壓縮的速度要慢幾倍说庭,和 Brotli 一比然磷,他們的優(yōu)勢消失殆盡。

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

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

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

服務(wù)器支持Brotli壓縮算法

支持Brotli壓縮算法的瀏覽器使用的內(nèi)容編碼類型為br

http請求頭:Accept-Encoding: gzip, deflate, sdch, br

http返回頭:Content-Encoding: br

在Nginx上啟用Brotli

nginx目前并不支持Brotli算法刊驴,需要使用第三方模塊姿搜,例如ngx_brotli進(jìn)行實現(xiàn)。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擴(kuò)展的預(yù)先壓縮過的文件舅柜。如果值為always,則總是使用壓縮過的文件攻礼,而不判斷瀏覽器是否支持业踢。

brotli:是否啟用在on-the-fly方式壓縮文件,啟用后礁扮,將會在響應(yīng)時對文件進(jìn)行壓縮并返回知举。

brotli_types:指定對哪些內(nèi)容編碼類型進(jìn)行壓縮瞬沦。text/html內(nèi)容總是會被進(jìn)行壓縮。

brotli_buffers:設(shè)置緩沖的數(shù)量和大小雇锡。大小默認(rèn)為一個內(nèi)存頁的大小逛钻,也就是4k或者8k。

brotli_comp_level:設(shè)置壓縮質(zhì)量等級锰提。取值范圍是0到11.

brotli_window:設(shè)置窗口大小曙痘。

brotli_min_length:設(shè)置需要進(jìn)行壓縮的最小響應(yīng)大小。

現(xiàn)在貼吧化的知乎立肘,就使用了brotli

相關(guān)文章:

Google 開源 Brotli 壓縮算法https://www.infoq.cn/article/2015/10/Google-Brotli-Zotfli/

智能壓縮边坤,擺脫用 Gzip 還是 Brotli 的糾結(jié)http://www.reibang.com/p/94a153630de4

讓 CDN 更省流量的 Brotli 算法詳解http://www.reibang.com/p/45c95bdf4f0c

使用Brotli提高網(wǎng)站訪問速度https://segmentfault.com/a/1190000009374437

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

轉(zhuǎn)載本站文章《Gzip之后繼者Brotli淺析之CDN廠商的智能壓縮,服務(wù)器Brotli設(shè)置》,

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谅年,一起剝皮案震驚了整個濱河市茧痒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌融蹂,老刑警劉巖旺订,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異超燃,居然都是意外死亡区拳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門意乓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來樱调,“玉大人,你說我怎么就攤上這事洽瞬”咎椋” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵伙窃,是天一觀的道長菩颖。 經(jīng)常有香客問我,道長为障,這世上最難降的妖魔是什么晦闰? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮鳍怨,結(jié)果婚禮上呻右,老公的妹妹穿的比我還像新娘。我一直安慰自己鞋喇,他們只是感情好声滥,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般落塑。 火紅的嫁衣襯著肌膚如雪纽疟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天憾赁,我揣著相機(jī)與錄音污朽,去河邊找鬼。 笑死龙考,一個胖子當(dāng)著我的面吹牛蟆肆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晦款,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼炎功,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缓溅?” 一聲冷哼從身側(cè)響起亡问,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肛宋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體束世,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡酝陈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了毁涉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沉帮。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盟广,靈堂內(nèi)的尸體忽然破棺而出你弦,到底是詐尸還是另有隱情肴焊,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布喇勋,位于F島的核電站,受9級特大地震影響偎行,放射性物質(zhì)發(fā)生泄漏川背。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一蛤袒、第九天 我趴在偏房一處隱蔽的房頂上張望熄云。 院中可真熱鬧,春花似錦妙真、人聲如沸缴允。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽练般。三九已至矗漾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踢俄,已是汗流浹背缩功。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留都办,地道東北人嫡锌。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像琳钉,于是被迫代替她去往敵國和親势木。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容