校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Nginx開啟Brotli壓縮算法實現過程詳解

Nginx開啟Brotli壓縮算法實現過程詳解

熱門標簽:陜西辦理400電話 信陽電銷外呼系統怎么樣 地圖標注小程序 宿州外呼系統公司 海外工廠地圖標注 貴陽網絡外呼系統軟件 株洲電銷 南充電銷外呼系統 南昌外呼系統定制

前言

在web應用中,為了節省流量,降低傳輸數據大小,提高傳輸效率,常用的壓縮方式一般都是gzip,今天我們來介紹另外一種更高效的壓縮方式brotli。

Brotli 是基于LZ77算法的一個現代變體、霍夫曼編碼和二階上下文建模。Google軟件工程師在2015年9月發布了包含通用無損數據壓縮的Brotli增強版本,特別側重于HTTP壓縮。

注意:使用算法的前提是啟用了 https,因為 http 請求中 request header 里的 Accept-Encoding: gzip, deflate 是沒有 br 的。
關于Brotli 算法詳細請查看:https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Brotli

瀏覽器對brotli協議的支持

各種壓縮算法的在不同level下的比較

從圖中可以看出brotli vs gzip 的壓縮算法 總體來說brotli的總體性能更好,尤其是解壓速度。我們在選擇brotli算法或gzip時,需要根據實際場景進行調優

下載Brotli

google/ngx_brotli 從 16年12月的版本起,開始內置google/brotli,所以我們不需要額外編譯bagder/libbrotli庫,讓安裝變得簡單起來。 我們將google/ngx_brotli下載并解壓到/usr/src/ngx_brotli目錄

cd /usr/src

git clone https://github.com/google/ngx_brotli.git

然后在下載google/brotli并解壓到/usr/src/ngx_brotli/deps/brotli

cd /usr/src/ngx_brotli/deps && rm -rf brotli
git clone git@github.com:google/brotli.git
cd /usr/src/ngx_brotli && git submodule update --init

編譯Brotli

nginx自1.9.11以后版本后支持動態模塊,自此,給nginx添加模塊再也不用重新編譯nginx了,通過動態模塊,你可以在運行時有有選擇性的加載第三方或Nginx官方模塊。新的實現方式通過API模塊保持盡可能的向后兼容。

下載解壓nginx安裝包

請下載與當前nginx版本相同的nginx安裝包。nginx官方下載地址:http://nginx.org/en/download.html。 這里假設當前服務器nginx是1.14.2版本。

可通過命令,獲取當前nginx版本

nginx -v

輸出

nginx version: nginx/1.14.2

下載nginx安裝包

cd /usr/src
wget http://59.80.44.46/nginx.org/download/nginx-1.14.2.tar.gz

解壓安裝包

tar -xvf nginx-1.14.2.tar.gz

編譯動態模塊

先進入解壓后的nginx安裝包目錄,配置configure,然后用make modules。

cd nginx-1.14.2
./configure --with-compat --add-dynamic-module=/usr/src/ngx_brotli
make modules

參數語法:--add-dynamic-module=[模塊源碼所在目錄的絕對路徑]

等運行完成后,查看編譯好的模塊

ls objs/*.so

輸出:

objs/ngx_http_brotli_filter_module.so objs/ngx_http_brotli_static_module.so

將編譯好的模塊文件復制到nginx動態模塊加載目錄

cp objs/{ngx_http_brotli_filter_module.so,ngx_http_brotli_static_module.so} /etc/nginx/modules

注冊Brotli模塊

為了方便管理nginx動態模塊,建議新建一個modules.conf文件,單獨管理動態模塊。

touch /etc/nginx/modules.conf

在/etc/nginx/nginx.conf配置文件里引入modules.conf文件,找到以下內容并修改:

pid /var/run/nginx.pid;

include /etc/nginx/modules.conf;

打開/etc/nginx/modules.conf,注冊剛才編譯好的 Brotli 模塊。

# Brotli模塊
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

啟用Brotli壓縮

Brotli和gzip是可以并存的,無需關閉gzip。

在/etc/nginx/nginx.conf開啟Brotli:

http {
  ...
  # gzip
  gzip on;
  gzip_min_length 1k;
  gzip_buffers 4 32k;
  gzip_http_version 1.1;
  gzip_comp_level 5;
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
  gzip_vary on;
  gzip_proxied any;
  gzip_disable "MSIE [1-6]\.";

  # brotli
  brotli on;
  brotli_comp_level 6;
  brotli_buffers 16 8k;
  brotli_min_length 20;
  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;
  ...
}

gzip與brotli的配置詳情

gzip調優
使用gzip壓縮功能,可能為我們節約帶寬,加快傳輸速度,有更好的體驗,也為我們節約成本,所以說這是一個重點。 關于gzip詳細介紹可點擊這里;

gzip on 開啟gzip壓縮功能。

gzip_min_length 1k

設置允許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取,默認值是 0 ,不管頁面多大都進行壓縮,建議設置成大于 1K ,如果小與1K可能會越壓越大。

gzip_buffers

壓縮緩沖區大小,表示申請4個單位為32K的內存作為壓縮結果流緩存,默認值是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果。

gzip_http_version 1.1

壓縮版本,用于設置識別HTTP協議版本,默認是 1.1 ,目前大部分瀏覽器已經支持GZIP解壓,使用默認即可。

gzip_comp_level 5

壓縮比例,用來指定gzip壓縮比,1壓縮比最小,處理速度最快,9壓縮比最大,傳輸速度快,但是處理慢,也比較消耗CPU資源。推薦設置為 5 。

gzip_types

用來指定壓縮的類型,text/html類型總是會被壓縮。

gzip_vary on

和http頭有關系,加個vary頭,給代理服務器用的,有的瀏覽器支持壓縮,有的不支持,所以避免浪費不支持的也壓縮,所以根據客戶端的HTTP頭來判斷,是否需要壓縮。

gzip_proxied any

nginx作為反向代理的時候啟用,開啟或者關閉后端服務器返回的結果,匹配的前提是后端服務器必須要返回包含Via的header頭。默認是 off 。 可選參數值:

  • off 關閉所有的代理結果數據的壓縮
  • expired 啟用壓縮,如果header頭中包含 Expires 頭信息
  • no-cache 啟用壓縮,如果header頭中包含 Cache-Control:no-cache 頭信息
  • no-store 啟用壓縮,如果header頭中包含 Cache-Control:no-store 頭信息
  • private 啟用壓縮,如果header頭中包含 Cache-Control:private 頭信息
  • no_last_modified 啟用壓縮,如果header頭中不包含 Last-Modified 頭信息
  • no_etag 啟用壓縮 ,如果header頭中不包含 ETag 頭信息
  • auth 啟用壓縮 , 如果header頭中包含 Authorization 頭信息
  • any 無條件啟用壓縮

gzip_disable

禁用IE6的gzip壓縮。 IE6對gzip的壓縮支持很不好,會造成頁面的假死。為了避免IE6出現問題,建議加上這個參數。

brotli調優

Google 認為互聯網用戶的時間是寶貴的,他們的時間不應該消耗在漫長的網頁加載中,因此在 2015 年 9 月 Google 推出了無損壓縮算法 Brotli。Brotli 通過變種的 LZ77 算法、Huffman 編碼以及二階文本建模等方式進行數據壓縮,與其他壓縮算法相比,它有著更高的壓塑壓縮效率。 關于brotli詳細介紹可點擊這里;

注:如果未安裝brotli模塊,此部分配置項無需配置,可略過。

brotli on

開啟brotli壓縮功能。

brotli_comp_level 6

壓縮比例,用來指定brotli壓縮比,1 壓縮比最小,處理速度最快,11 壓縮比最大,傳輸速度快,但是處理慢,也比較消耗CPU資源。默認值為 6 ,使用默認值即可。

brotli_buffers 16 8k

設置用于壓縮響應的緩沖區number和size。默認情況下,緩沖區大小等于一個內存頁面。 默認值:32 4k|16 8k。

brotli_min_length 20

設置length要壓縮的響應的最小值,長度僅由Content-Length響應頭字段確定。默認為 20 。

brotli_types

用來指定壓縮的類型,text/html類型總是會被壓縮。

gzip與brotli的配置詳情在反向代理配置文件代碼中添加:

proxy_set_header Accept-Encoding "";

范例:

server {
  ...
  location / {
    ...
    proxy_set_header Accept-Encoding "";
    ...
  }
  ...
}

重啟nginx,使其配置生效

systemctl restart nginx

Brotli 壓縮只能在https中生效,因為 在 http 請求中 request header 里的 Accept-Encoding: gzip, deflate 是沒有 br 的。
清理臨時文件

要養成好習慣,每次編譯完后都要把應用包解壓出來的文件或目錄進行刪除。

rm -rf /usr/src/{nginx-1.14.2/,ngx_brotli/}

最后檢查是否生效

打開網頁,用chrome開發者工具調試,在Network一欄會發現有content-encoding:br,同時網絡耗時也會明顯減少。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:晉城 開封 鄭州 玉林 三明 汕頭 拉薩 石嘴山

巨人網絡通訊聲明:本文標題《Nginx開啟Brotli壓縮算法實現過程詳解》,本文關鍵詞  Nginx,開啟,Brotli,壓縮,算法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Nginx開啟Brotli壓縮算法實現過程詳解》相關的同類信息!
  • 本頁收集關于Nginx開啟Brotli壓縮算法實現過程詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    一区二区欧美精品| 日韩一区二区免费视频| 国产成人精品亚洲777人妖| 精油按摩中文字幕久久| 国产精品综合av一区二区国产馆| av中文一区二区三区| 欧美日韩一区在线观看| 国产午夜精品久久| 蜜臀av一级做a爰片久久| caoporn国产精品| 久久久久久亚洲综合| 午夜精品久久久久久不卡8050| 国产69精品久久99不卡| 欧美一区二区在线不卡| 亚洲理论在线观看| 日本高清不卡视频| 亚洲男同1069视频| 99久久久国产精品| 久久精品视频网| 国产精品一级黄| 精品国产亚洲在线| 看电视剧不卡顿的网站| 6080yy午夜一二三区久久| 亚洲精品一二三| 91麻豆免费视频| 亚洲女厕所小便bbb| 欧美日韩中文一区| 丝袜美腿亚洲一区二区图片| 欧美日韩视频第一区| 亚洲www啪成人一区二区麻豆| 欧美午夜精品久久久| 亚洲成a人片在线观看中文| 91久久线看在观草草青青| 一级做a爱片久久| 欧美日产国产精品| 国内精品伊人久久久久av影院 | 美女视频一区二区三区| 国产欧美一区二区精品忘忧草| 99re6这里只有精品视频在线观看| 国产日韩精品一区二区三区在线| 99精品视频在线观看免费| 日韩精品成人一区二区三区| 国产午夜亚洲精品理论片色戒| 91一区二区三区在线观看| 日本午夜精品视频在线观看 | 欧美无砖专区一中文字| 激情五月婷婷综合网| 亚洲欧美日韩精品久久久久| 精品久久久久久综合日本欧美| 国产白丝网站精品污在线入口 | 日韩一区二区视频| 91丨porny丨中文| 九色综合狠狠综合久久| 亚洲成人资源在线| 亚洲色图一区二区三区| 日韩欧美亚洲国产另类 | 欧美影院午夜播放| 97精品久久久午夜一区二区三区| 理论片日本一区| 美女免费视频一区| 奇米精品一区二区三区在线观看| 亚洲成在人线免费| 午夜精品久久久久久久| 亚洲精品国产品国语在线app| 国产精品视频在线看| 久久久久久久精| 国产精品不卡在线观看| 亚洲欧美另类小说| 一区二区三区毛片| 亚洲成人av在线电影| 丝袜国产日韩另类美女| 国产成人午夜视频| 99久久精品国产观看| 色综合天天综合网天天狠天天| 91国偷自产一区二区开放时间 | 丁香婷婷综合网| 91久久线看在观草草青青| 337p亚洲精品色噜噜噜| 久久久无码精品亚洲日韩按摩| 国产精品人成在线观看免费| 一级精品视频在线观看宜春院| 日本欧美一区二区| 91香蕉视频mp4| www国产成人免费观看视频 深夜成人网| 久久精品无码一区二区三区 | 久久精品一区二区三区不卡牛牛 | 欧美综合欧美视频| 自拍视频在线观看一区二区| 久久激情五月激情| 欧美日韩国产高清一区二区| 国产精品对白交换视频| 狠狠网亚洲精品| 在线电影院国产精品| 国产女人水真多18毛片18精品视频| 亚洲高清一区二区三区| 不卡的av网站| 亚洲三级电影全部在线观看高清| 黑人巨大精品欧美一区| www精品美女久久久tv| 国产资源精品在线观看| 精品国产sm最大网站免费看| 久久国产精品第一页| 久久毛片高清国产| 成人综合婷婷国产精品久久免费| 精品粉嫩超白一线天av| 久久99这里只有精品| 欧美成人在线直播| 国产高清在线精品| 中文一区二区在线观看| 成人精品一区二区三区四区| 亚洲欧美福利一区二区| 777xxx欧美| 成人国产在线观看| 亚洲国产wwwccc36天堂| 91精品国产麻豆| 国产在线精品不卡| 亚洲自拍偷拍图区| 国产精品丝袜在线| 日韩女优电影在线观看| av一区二区三区| 国内精品视频一区二区三区八戒 | 亚洲男帅同性gay1069| 欧美人妇做爰xxxⅹ性高电影| 极品少妇一区二区| 性做久久久久久免费观看欧美| 日韩欧美精品在线| 色婷婷久久99综合精品jk白丝| 激情丁香综合五月| 日韩激情一二三区| 天堂蜜桃91精品| 亚洲欧美乱综合| 亚洲免费资源在线播放| 久久精品人人做人人综合 | 亚洲欧美激情视频在线观看一区二区三区| 欧美中文字幕一区| 97se亚洲国产综合自在线不卡| 国产在线播放一区| 国产黑丝在线一区二区三区| 国产剧情一区二区| 激情久久五月天| 丁香亚洲综合激情啪啪综合| 久久www免费人成看片高清| 久久精品理论片| 国产91对白在线观看九色| 粉嫩13p一区二区三区| av影院午夜一区| 欧美日韩一区视频| 日韩精品专区在线影院观看| 久久综合久久鬼色| 亚洲人亚洲人成电影网站色| 亚洲丝袜另类动漫二区| 亚洲国产精品久久艾草纯爱| 日韩精品一级二级 | 成年人网站91| 91精品国产免费| 精品福利视频一区二区三区| 中文字幕中文乱码欧美一区二区| 1000部国产精品成人观看| 亚洲一卡二卡三卡四卡| 国内精品自线一区二区三区视频| 国产成人超碰人人澡人人澡| 99国产精品国产精品毛片| 在线成人免费视频| 国产精品国产三级国产普通话蜜臀| 玉米视频成人免费看| 久久狠狠亚洲综合| 色婷婷香蕉在线一区二区| 亚洲精品一区二区三区香蕉 | 色综合色综合色综合色综合色综合 | 日韩在线一二三区| 91福利资源站| 最新成人av在线| 成人动漫中文字幕| 2024国产精品视频| 经典一区二区三区| 欧美一区二区三区白人| 日欧美一区二区| 日韩午夜精品电影| 午夜av电影一区| 欧美日韩亚洲综合在线| 天堂va蜜桃一区二区三区| 欧美日韩一区二区三区四区| 依依成人综合视频| 337p亚洲精品色噜噜| 美腿丝袜在线亚洲一区| 久久伊人中文字幕| 高清在线不卡av| 亚洲精品乱码久久久久久日本蜜臀| 99久久综合精品| 亚洲午夜一区二区三区| 欧美一级在线视频| 国产一区二区在线视频| 亚洲女人小视频在线观看| 欧美精品亚洲一区二区在线播放| 毛片一区二区三区| 国产精品区一区二区三区| 午夜影院久久久| 91丨porny丨国产入口| 欧美国产日韩精品免费观看| 最好看的中文字幕久久|