在web應用中,爲了節省流量,下降傳輸數據大小,提升傳輸效率,經常使用的壓縮方式通常都是gzip,今天咱們來介紹另一種更高效的壓縮方式brotli。
Brotli 是基於LZ77算法的一個現代變體、霍夫曼編碼和二階上下文建模。Google軟件工程師在2015年9月發佈了包含通用無損數據壓縮的Brotli加強版本,特別側重於HTTP壓縮。其中的編碼器被部分改寫以提升壓縮比,編碼器和解碼器都提升了速度,流式API已被改進,增長更多壓縮質量級別。
與常見的通用壓縮算法不一樣,Brotli使用一個預約義的120千字節字典。該字典包含超過13000個經常使用單詞、短語和其餘子字符串,這些來自一個文本和HTML文檔的大型語料庫。預約義的算法能夠提高較小文件的壓縮密度。
使用Brotli替換Deflate(gzip)來對文本文件壓縮一般能夠增長20%的壓縮密度,而壓縮與解壓縮速度則大體不變。javascript
瀏覽器支持狀況css
以centos爲例,配置Nginx使其支持brotli壓縮java
一、安裝依賴nginx
> yum groupinstall 'Development Tools'
二、安裝libbrotligit
cd /usr/local/src/ git clone https://github.com/bagder/libbrotli cd libbrotli ./autogen.sh ./configure make && make install
三、安裝ngx_brotligithub
> cd /usr/local/src/ > git clone https://github.com/google/ngx_brotli > cd ngx_brotli && git submodule update --init
四、下載Nginxweb
> cd /usr/local/src > wget http://nginx.org/download/nginx-1.10.3.tar.gz > tar -xvzf nginx-1.10.3.tar.gz
五、編譯安裝算法
> cd /usr/local/src/nginx-1.10.3 > ./configure --add-module=/usr/local/src/ngx_brotli > make # 若是是首次安裝Nginx,執行make install;若是是升級,執行make upgrade > make install
六、查看是否安裝正常chrome
> nginx -V > nginx -t
七、配置brotli
在nginx.conf文件的http模塊下新增如下內容json
#Brotli Compression brotli on; brotli_comp_level 6; brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
八、檢查是否生效
打開網頁,用chrome開發者工具調試,在Network一欄會發現有content-encoding:br,同時網絡耗時也會明顯減小。