怎么為Nginx啟用Brotli壓縮算法

什么是 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

如圖所示

怎么為Nginx啟用Brotli壓縮算法

即表示開啟了 brotli 壓縮

配置說明

指令介紹

定義了如下指令:

brotli,是否允許動態壓縮響應數據,可選值為on和off,默認值為off。樣例如下:

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;

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享