一.前言
在之前測試HTTP應答的壓縮過程中無意間發現在Google瀏覽器下出現了 Content-Encoding:br 這種的編碼格式,當時我就納悶了,前面不是一直在研究GZip壓縮嗎?br壓縮又是什么鬼?查了一圈資料才發現 br 居然是比 Gzip 壓縮率更高的算法,接下來我們就來具體看看。
二.什么是br(Brotli)算法
Google 認為互聯網用戶的時間是寶貴的,他們的時間不應該消耗在漫長的網頁加載中,因此在 2015 年 9 月 Google 推出了無損壓縮算法 Brotli。Brotli 通過變種的 LZ77 算法、Huffman 編碼以及二階文本建模等方式進行數據壓縮,與其他壓縮算法相比,它有着更高的壓塑壓縮效率。啟用 Brotli 壓縮算法,對比 Gzip 壓縮 CDN 流量再減少 20%。
根據 Google 發布的研究報告,Brotli 壓縮算法具有多個特點,最典型的是以下 3 個:
- 針對常見的 Web 資源內容,Brotli 的性能相比 Gzip 提高了 17-25%;
- 當 Brotli 壓縮級別為 1 時,壓縮率比 Gzip 壓縮等級為 9(最高)時還要高;
- 在處理不同 HTML 文檔時,Brotli 依然能夠提供非常高的壓縮率。
Brotli 憑借它優異的壓縮性能迅速占領了市場,從下圖可以看到,除了 IE 和 Opera Mini 之外,幾乎所有的主流瀏覽器都已支持 Brotli 算法。
三.如何使用Brotli算法
和 Gzip 壓縮算法一樣,Brotli 壓縮算法也是免費開放給又拍雲 CDN 平台上的所有用戶,同時該特性已默認開啟。
使用又拍雲 CDN Brotli 壓縮算法需要同時滿足三個條件:
- Content-Type 滿足如下 MIME 列表:
text/plain text/javascript text/css text/xml text/x-component application/javascript application/x-javascript application/xml application/json application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype text/html -- default
- Content-Length 大於 256 字節
- 客戶端請求頭需攜帶 Accept-Encoding: br