為Nginx啟用Brotli壓縮算法的方法示例
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壓縮。其中的編碼器被部分改寫(xiě)以提高壓縮比,編碼器和解碼器都提高了速度,流式API已被改進(jìn),增加更多壓縮質(zhì)量級(jí)別。新版本還展現(xiàn)了跨平臺(tái)的性能改進(jìn),以及減少解碼所需的內(nèi)存。
與常見(jiàn)的通用壓縮算法不同,Brotli使用一個(gè)預(yù)定義的120千字節(jié)字典。該字典包含超過(guò)13000個(gè)常用單詞、短語(yǔ)和其他子字符串,這些來(lái)自一個(gè)文本和HTML文檔的大型語(yǔ)料庫(kù)。預(yù)定義的算法可以提升較小文件的壓縮密度。
使用brotli替換deflate來(lái)對(duì)文本文件壓縮通常可以增加20%的壓縮密度,而壓縮與解壓縮速度則大致不變。使用Brotli進(jìn)行流壓縮的內(nèi)容編碼類(lè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
例如
配置,在 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
如圖所示
即表示開(kāi)啟了 brotli 壓縮
配置說(shuō)明
指令介紹
ngx_brotli定義了如下指令:
brotli,是否允許動(dòng)態(tài)壓縮響應(yīng)數(shù)據(jù),可選值為on和off,默認(rèn)值為off。樣例如下:
brotli on;
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_static off;
brotli_comp_level,壓縮級(jí)別,可選值范圍為0~11,默認(rèn)值為6。樣例如下:
brotli_comp_level 11;
brotli_buffers,壓縮響應(yīng)數(shù)據(jù)時(shí)使用的緩沖區(qū)的數(shù)量和大小。樣例如下:
brotli_buffers 16 8k;
brotli_window,brotli使用的窗口值,默認(rèn)值為512k。樣例如下:
brotli_window 512k;
brotli_min_length,響應(yīng)數(shù)據(jù)的最小長(zhǎng)度,低于該值將不使用brotli算法執(zhí)行壓縮操作。brotli算法使用Content-Length來(lái)確定響應(yīng)數(shù)據(jù)的長(zhǎng)度。樣例如下:
brotli_min_length 20;
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用Nginx實(shí)現(xiàn)反向代理Node.js的方法詳解
這篇文章主要給大家介紹了關(guān)于利用Nginx實(shí)現(xiàn)反向代理Node.js的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08nginx使用sticky基于cookie的會(huì)話保持方式
這篇文章主要介紹了nginx使用sticky基于cookie的會(huì)話保持方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12nginx 部署啟動(dòng)jar包用到的一些命令和流程操作
這篇文章主要介紹了nginx 部署啟動(dòng)jar包用到的一些命令和流程操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11Nginx使用limit_req_zone對(duì)同一IP訪問(wèn)進(jìn)行限流的方法
今天小編就為大家分享一篇Nginx使用limit_req_zone對(duì)同一IP訪問(wèn)進(jìn)行限流的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Nginx 搭建域名訪問(wèn)環(huán)境的詳細(xì)過(guò)程
這篇文章主要介紹了Nginx 搭建域名訪問(wèn)環(huán)境的詳細(xì)過(guò)程,通過(guò)示例代碼講解了Nginx 搭建轉(zhuǎn)發(fā)網(wǎng)關(guān)進(jìn)行負(fù)載均衡的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧2024-06-06nginx的keepalive相關(guān)參數(shù)使用源碼解讀
這篇文章主要為大家介紹了nginx的keepalive相關(guān)參數(shù)使用源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12nginx配置ssl實(shí)現(xiàn)https訪問(wèn)的步驟(適合新手)
這篇文章主要給大家介紹了關(guān)于nginx配置ssl實(shí)現(xiàn)https訪問(wèn)的相關(guān)資料,這個(gè)教程非常適合新手小白,文中通過(guò)示例代碼將實(shí)現(xiàn)的方法一步步介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧2018-12-12Nginx的安裝和多域名配置的實(shí)現(xiàn)方法
這篇文章主要介紹了Nginx的安裝和多域名配置的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09