1. 程式人生 > 實用技巧 >寶塔面板LNMP開啟Brotli壓縮,可提高網站載入速度

寶塔面板LNMP開啟Brotli壓縮,可提高網站載入速度

說明:BrotliGoogle推出的開源壓縮演算法,通過變種的LZ77演算法、Huffman編碼以及二階文字建模等方式進行資料壓縮,與其他壓縮演算法相比,它有著更高的壓縮效率,效能也比我們目前常見的Gzip17-25%,可以幫我們更高效的壓縮網頁中的各類檔案大小及指令碼,從而提高載入速度,提升網頁瀏覽體驗。博主目前也給開啟了Brotli壓縮,體驗還行吧,這裡就說下寶塔面板的開啟方法。

要開啟https才會傳送br壓縮頭

安裝

1、下載Brotli

cd /www/server
#下載brotli
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
#更新brotli
git submodule update --init

2、編譯Nginx

提示:手動編譯只測試過Nginx 1.15,部分版本好像會提示缺少模組,建議使用後面的寶塔指令碼編譯方法。

先檢視目前的Nginx版本資訊,使用命令:

nginx -V

大概會輸出以下資訊:

[root@rats ~]# nginx -V
nginx version: nginx/1.15.10
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.1.1b  26 Feb 2019
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl ... --with-ld-opt=-ljemalloc

nginx版本為1.15.10configure arguments:後面的為你nginx的編譯引數,下面會用到。

然後重新下載nginx,並開始編譯,使用命令:

#下載nginx,這裡下載的1.15.10版本,如果是其它版本,把下載連結的1.15.10改成你的版本號即可
wget http://nginx.org/download/nginx-1.15.10.tar.gz
#解壓並刪除壓縮包
tar -xvzf nginx-*.tar.gz && rm -rf nginx-*.tar.gz
#進入nginx目錄
cd nginx*
#生成Makefile,./configure後面的引數直接複製上面看到的,然後在後面額外加一個--add-module=/www/server/ngx_brotli
./configure --user=www --group=www --prefix=/www/server/nginx ... --add-module=/www/server/ngx_brotli
#編譯nginx
make && make install

不出意外的話,就編譯完成了,然後繼續使用命令檢視資訊:

nginx -V

返回引數後面多了個--add-module=/www/server/ngx_brotli就編譯成功了。

除了手動編譯外,還一種更加方便,且出錯率很低的方法,使用寶塔自帶的Nginx安裝指令碼進行編譯安裝,大致步驟:

1、編輯nginx安裝指令碼,路徑/www/server/panel/install/nginx.sh,找到Install_Configure(){...}或Install_Nginx(){...}欄位,然後找出你要安裝的nginx版本號,在下面一行的./configure --user=www ...後面新增--add-module=/www/server/ngx_brotli即可,記得之間間隔一個英文空格。

2、在ssh客戶端使用命令開始編譯,根據自己的版本,將後面數字改為1.10、1.12、1.14、1.15、1.17、1.8、openresty等
sh /www/server/panel/install/nginx.sh install 1.16

3、安裝好了使用nginx -V檢視是否含有模組即可。

3、開啟Brotli壓縮
接下來點選面板左側軟體商店-Nginx設定-配置修改,在http段內新增以下內容來啟用Brotli壓縮。

brotli on;
brotli_comp_level 6;
brotli_min_length 512;
brotli_types 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;
brotli_static always;

最後點選Nginx設定裡的過載配置生效即可。

Brotli全部引數詳解:

brotli on;              #啟用
brotli_comp_level 6;    #壓縮等級,預設6,最高11,太高的壓縮水平可能需要更多的CPU
brotli_buffers 16 8k;   #請求緩衝區的數量和大小
brotli_min_length 20;   #指定壓縮資料的最小長度,只有大於或等於最小長度才會對其壓縮。這裡指定20位元組
brotli_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml text/html application/json image/svg application/font-woff application/vnd.ms-fontobject application/vnd.apple.mpegurl image/x-icon image/jpeg image/gif image/png image/bmp;   #指定允許進行壓縮型別
brotli_static always;   #是否允許查詢預處理好的、以.br結尾的壓縮檔案,可選值為on、off、always
brotli_window 512k;     #視窗值,預設值為512k

全部配置好了,就可以使用谷歌瀏覽器檢視下是否開啟成功,看到br欄位即為成功。

最後博主感覺壓縮效果還行,有興趣的可以開一下,對於其它的安裝環境,安裝方法都差不多,這裡預設是BrotliGzip共存,並且都啟用了,好處就是部分老舊的瀏覽器不支援Brotli的時候會自動變成Gzip壓縮。