Brotli是一種全新的數(shù)據(jù)格式,可以提供比Zopfli高20-26%的壓縮比。
什么是 Brotli 壓縮算法
Brotli最初發(fā)布于2015年,用于網(wǎng)絡(luò)字體的離線壓縮。Google軟件工程師在2015年9月發(fā)布了包含通用無(wú)損數(shù)據(jù)壓縮的Brotli增強(qiáng)版本,特別側(cè)重于HTTP壓縮。其中的編碼器被部分改寫以提高壓縮比,編碼器和解碼器都提高了速度,流式API已被改進(jìn),增加更多壓縮質(zhì)量級(jí)別。新版本還展現(xiàn)了跨平臺(tái)的性能改進(jìn),以及減少解碼所需的內(nèi)存。
與常見的通用壓縮算法不同,Brotli使用一個(gè)預(yù)定義的120千字節(jié)字典。該字典包含超過(guò)13000個(gè)常用單詞、短語(yǔ)和其他子字符串,這些來(lái)自一個(gè)文本和HTML文檔的大型語(yǔ)料庫(kù)。預(yù)定義的算法可以提升較小文件的壓縮密度。
使用brotli替換deflate來(lái)對(duì)文本文件壓縮通??梢栽黾?0%的壓縮密度,而壓縮與解壓縮速度則大致不變。使用Brotli進(jìn)行流壓縮的內(nèi)容編碼類型已被提議使用“br”。
安裝
1.下載 brotli
git clone https://github.com/google/ngx_brotli
cd ngx_brotli && git submodule update --init
2.編譯
在原有的編譯配置后增加 –add-module=/opt/nginx/ngx_brotli
例如
復(fù)制代碼 代碼如下:
./configure --prefix=/usr/local/nginx --user=www --group=www --with-pcre=/opt/nginx/pcre-8.41 --with-http_ssl_module --with-zlib=/opt/nginx/zlib-1.2.11 --with-openssl=/opt/nginx/openssl-1.0.2n --add-module=/opt/nginx/ngx_brotli --with-http_v2_module
配置,在 http 段加入
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
#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;
……
重啟,刷新頁(yè)面查看 header,發(fā)現(xiàn)有
accept-encoding:gzip, deflate, br
如圖所示
即表示開啟了 brotli 壓縮
配置說(shuō)明
指令介紹
ngx_brotli定義了如下指令:
brotli,是否允許動(dòng)態(tài)壓縮響應(yīng)數(shù)據(jù),可選值為on和off,默認(rèn)值為off。樣例如下:
brotli_types,動(dòng)態(tài)壓縮啟用時(shí),允許壓縮的MIME types,默認(rèn)值為text/html。樣例如下:
brotli_types text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript;
brotli_static,是否允許查找預(yù)處理好的、以.br結(jié)尾的壓縮文件,可選值為on、off和always,默認(rèn)值為off。樣例如下:
brotli_comp_level,壓縮級(jí)別,可選值范圍為0~11,默認(rèn)值為6。樣例如下:
brotli_buffers,壓縮響應(yīng)數(shù)據(jù)時(shí)使用的緩沖區(qū)的數(shù)量和大小。樣例如下:
brotli_window,brotli使用的窗口值,默認(rèn)值為512k。樣例如下:
brotli_min_length,響應(yīng)數(shù)據(jù)的最小長(zhǎng)度,低于該值將不使用brotli算法執(zhí)行壓縮操作。brotli算法使用Content-Length來(lái)確定響應(yīng)數(shù)據(jù)的長(zhǎng)度。樣例如下:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。