摘要:軟件工程師在年月發布了包含通用無損數據壓縮的增強版本,特別側重于壓縮。與常見的通用壓縮算法不同,使用一個預定義的千字節字典。另外,把換成,真的可以感受到速度明顯提升了。。。
內容協商
在介紹 Brotli 之前,先說一下 HTTP 內容協商
有時候,同一個 URL 可以提供多份不同的文檔,這就要求服務端和客戶端之間有一個選擇最合適版本的機制,這就是內容協商
HTTP 的內容協商的其中一種方式:服務端根據客戶端發送的請求頭中某些字段自動發送最合適的版本。可以用于這個機制的請求頭字段又分兩種:內容協商專用字段(Accept 字段)、其他字段
字段情況,詳見下表:
請求頭字段 | 說明 | 響應頭字段 |
---|---|---|
Accept | 告知服務器發送何種媒體類型 | Content-Type |
Accept-Language | 告知服務器發送何種語言 | Content-Language |
Accept-Charset | 告知服務器發送何種字符集 | Content-Type |
Accept-Encoding | 告知服務器采用何種壓縮方式 | Content-Encoding |
例如客戶端發送以下請求頭:
Accept-Encoding:gzip,deflate,br
表示支持采用 gzip、deflate 或 br 壓縮過的資源
瀏覽器的響應頭可能是這樣的:
Content-Encoding: gzip
詳情可參考:Here
什么是 Brotli從上面的內容了解到,我們控制使用壓縮的資源,除了有Gzip外,還有br,而這個br就是我這里要說的 Brotli
瀏覽器支持情況Brotli is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate but offers more dense compression.
Brotli 是基于LZ77算法的一個現代變體、霍夫曼編碼和二階上下文建模。Google軟件工程師在2015年9月發布了包含通用無損數據壓縮的Brotli增強版本,特別側重于HTTP壓縮。其中的編碼器被部分改寫以提高壓縮比,編碼器和解碼器都提高了速度,流式API已被改進,增加更多壓縮質量級別。
與常見的通用壓縮算法不同,Brotli使用一個預定義的120千字節字典。該字典包含超過13000個常用單詞、短語和其他子字符串,這些來自一個文本和HTML文檔的大型語料庫。預定義的算法可以提升較小文件的壓縮密度。
使用Brotli替換Deflate來對文本文件壓縮通常可以增加20%的壓縮密度,而壓縮與解壓縮速度則大致不變。
Mozilla Firefox在Firefox 44中實現Brotli。
Google Chrome從Chrome 49開始支持Brotli。
Opera從Opera 36開始支持Brotli。
安裝與配置過程安裝需要用到開發工具
CentOS,如下
yum groupinstall "Development Tools"
Ubuntu,如下
sudo apt-get install autoconf libtool automake
這次的教程實踐環境是CentOS 7,已經在linpx.com上實現了
下面開始正式的教程
安裝libbrotli
cd /usr/local/src/ git clone https://github.com/bagder/libbrotli cd libbrotli ./autogen.sh ./configure make && make install
安裝ngx_brotli
cd /usr/local/src/ git clone https://github.com/google/ngx_brotli cd ngx_brotli && git submodule update --init
下載Nginx
這里使用 nginx-1.10.3
cd /usr/local/src wget http://nginx.org/download/nginx-1.10.3.tar.gz tar -xvzf nginx-1.10.3.tar.gz && rm -rf nginx-1.10.3.tar.gz
獲取Nginx Arguments
nginx -V
整理新的Arguments
根據獲取到的configure arguments和上面軟件的位置,重新整理configure arguments
然后再加上 --add-module=/usr/local/src/ngx_brotli
開始安裝和編譯
cd /usr/local/src/nginx-1.10.3 ./configure [這里是你的原Arguments] --add-module=/usr/local/src/ngx_brotli make && make install
檢查是否安裝正常
nginx -V nginx -t
找到Nginx的全局配置文件
如果檢測安裝正常的話,可以開始配置,該配置文件一般為 nginx.conf
在合適的位置插入下面代碼
#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;
再次檢測是否正常
nginx -t
重啟Nginx
如果正常的話,恭喜你,你已經配置完成了,重啟一下Nginx即可
CentOS 6.x:
service nginx restart
CentOS 7.x:
systemctl restart nginx
檢查是否生效
打開你的網頁,用chrome開發者工具調試,在Network那,發現有content-encoding:br
可能的報錯如果在測試或者重載時, Nginx 報錯如下:
nginx: error while loading shared libraries: libbrotlienc.so.1: cannot open shared object file: No such file or directory
解決方法是把對應的庫文件在 /lib(64) 或者 /usr/lib(64) 中做上軟鏈接:
# 64 位系統 $ ln -s /usr/local/lib/libbrotlienc.so.1 /lib64 # 32 位系統 $ ln -s /usr/local/lib/libbrotlienc.so.1 /lib結論
一周前就已經完成配置和實踐,拖到今天才寫完。。。
另外,把Gzip換成br,真的可以感受到速度明顯提升了。。。
內容較多,大概就這樣。。。
對了,文章首發于 www.linpx.com,歡迎大家多多訪問我的博客,謝謝
參考imququ.com/post/my-nginx-conf.html
wangqiliang.com/qi-yong-brotli-ya-suo-suan-fa-ti-gao-xing-neng/
zh.wikipedia.org/wiki/Brotli
hacks.mozilla.org/2015/11/better-than-gzip-compression-with-brotli/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39552.html
摘要:配置如下指令是設定的工作模式及連接數上限。指令用來指定的工作模式。該參數默認是,建議開啟。配置進程的最大打開文件數調整配置進程的最大打開文件數,這個控制連接數的參數為。但副作用是資源更新可能無法及時。 工作上,需要配置 Nginx,要投入生產使用,做了一點優化工作,加上以前也經常折騰 Nginx,故記下一些優化工作。 優化 Nginx 進程數量 配置參數如下: worker_proce...
摘要:軟件工程師在年月發布了包含通用無損數據壓縮的增強版本,特別側重于壓縮。與常見的通用壓縮算法不同,使用一個預定義的千字節字典。 在web應用中,為了節省流量,降低傳輸數據大小,提高傳輸效率,常用的壓縮方式一般都是gzip,今天我們來介紹另外一種更高效的壓縮方式brotli。??Brotli 是基于LZ77算法的一個現代變體、霍夫曼編碼和二階上下文建模。Google軟件工程師在2015年9...
摘要:怎么樣,好不好,應該成為您的虛擬主機選擇嗎虛擬主機支持壓縮算法并在在服務器上部署并啟用,托管在虛擬主機上的網站訪問速度會提高左右。虛擬主機是官方推薦的主機,與是絕佳搭配。虛擬主機上面的網站速度穩定性都很棒,在國外測試網站評測很高。SiteGround怎么樣,SiteGround好不好,SiteGround應該成為您的虛擬主機選擇嗎?SiteGround虛擬主機支持Brotli壓縮算法并在在服...
摘要:前端每周清單第期支付寶前端構建工具發展用加快網頁響應速度餓了么升級實踐前端前端每周清單前端每周清單專注前端領域內容,分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。 前端每周清單第 12 期:支付寶前端構建工具發展、LinkedIn用Brotli加快網頁響應速度、餓了么PWA 升級實踐 為InfoQ中文站特供稿件,首發地址為這里;如需轉載,請與InfoQ中文站聯系。從屬于筆...
摘要:目前又拍云已支持壓縮算法,通過對新壓縮算法的支持將壓縮率提升,并且幫助降低移動設備的電池使用量,并達到省電延長電池使用壽命的目的。當客戶端同時支持兩種算法時,又拍云會優先響應版本文件。 Google 認為互聯網用戶的時間是寶貴的,他們的時間不應該消耗在漫長的網頁加載中,因此在 2015 年 9 月 Google 推出了無損壓縮算法 Brotli。Brotli 通過變種的 LZ77 算法...
閱讀 1076·2021-10-14 09:42
閱讀 1369·2021-09-22 15:11
閱讀 3285·2019-08-30 15:56
閱讀 1243·2019-08-30 15:55
閱讀 3612·2019-08-30 15:55
閱讀 889·2019-08-30 15:44
閱讀 2028·2019-08-29 17:17
閱讀 2071·2019-08-29 15:37