什麼是 brotli 壓縮演算法
brotli最初發佈於2015年,用於網頁字體的離線壓縮。 google軟體工程師在2015年9月發布了包含通用無損資料壓縮的brotli增強版本,特別專注於http壓縮。其中的編碼器被部分改寫以提高壓縮比,編碼器和解碼器都提高了速度,流式api已被改進,增加更多壓縮品質等級。新版本還展現了跨平台的效能改進,以及減少解碼所需的記憶體。
與常見的通用壓縮演算法不同,brotli使用一個預先定義的120千位元組字典。該字典包含超過13000個常用單字、短語和其他子字串,這些來自一個文字和html文檔的大型語料庫。預先定義的演算法可以提升較小檔案的壓縮密度。
使用brotli取代deflate來對文字檔案壓縮通常可以增加20%的壓縮密度,而壓縮與解壓縮速度則大致不變。使用brotli進行流壓縮的內容編碼類型已被提議使用“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
例如
#複製程式碼 程式碼如下:
./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; ……
重啟,重新整理頁面查看header ,發現有
accept-encoding:gzip, deflate, br
如圖所示
即表示開啟了brotli 壓縮
##設定說明
指令介紹
brotli on;brotli_types,動態壓縮啟用時,允許壓縮的mime types,預設值為text/html。樣例如下:
brotli_types text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript;brotli_static,是否允許查找預處理好的、以.br結尾的壓縮文件,可選值為on、off和always,預設值為off。樣例如下:
brotli_static off;brotli_comp_level,壓縮級別,可選值範圍為0~11,預設值為6。樣例如下:
brotli_comp_level 11;brotli_buffers,壓縮回應資料時使用的緩衝區的數量和大小。樣例如下:
brotli_buffers 16 8k;brotli_window,brotli使用的視窗值,預設值為512k。樣例如下:
brotli_window 512k;brotli_min_length,回應資料的最小長度,低於該值將不使用brotli演算法執行壓縮操作。 brotli演算法使用content-length來決定回應資料的長度。樣例如下:
brotli_min_length 20;
以上是怎麼為Nginx啟用Brotli壓縮演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!