nginx實現資源壓縮的原理是通過ngx_http_gzip_module模組攔截請求,並對需要做gzip的型別做gzip,ngx_http_gzip_module是nginx預設整合的,不需要重新編譯,直接開啟即可。
這個沒的說,開啟或關閉gzip
設定用於處理請求壓縮的緩衝區數量和大小。比如32 4k表示按照記憶體頁(one memory page)大小以4k為單位(即乙個系統中記憶體頁為4k),申請32倍的記憶體空間。建議此項不設定,使用預設值。
設定gzip壓縮級別,級別越底壓縮速度越快檔案壓縮比越小,反之速度越慢檔案壓縮比越大
我們以乙個大小為92.6k的指令碼檔案為例,如下所示。其中最後三個數值分別表示壓縮比、包大小、平均處理時間(使用ab壓測,100使用者併發下,./ab -n 10000 -c 100 -h 'accept-encoding: gzip'
)以及cpu消耗。
從這我們可以得出結論:
因此,建議:
通過表示式,表明哪些ua頭不使用gzip壓縮
當返回內容大於此值時才會使用gzip進行壓縮,以k為單位,當值為0時,所有頁面都進行壓縮。
用於識別http協議的版本,早期的瀏覽器不支援gzip壓縮,使用者會看到亂碼,所以為了支援前期版本加了此選項。預設在http/1.0的協議下不開啟gzip壓縮。
因為瀏覽器基本上都支援http/1.1。然而這裡面卻存在著乙個很容易掉入的坑,也是筆者從生產環境中乙個詭異問題中發現的:
明明開啟gzip功能,但是未生效。
原因定位:
為什麼這樣呢?
在應用伺服器前,公司還有一層nginx的集群作為七層負責均衡,在這一層上,是沒有開啟gzip的。
如果我們使用了proxy_pass進行反向**,那麼nginx和後端的upstream server之間預設是用http/1.0協議通訊的。
如果我們的cache server也是nginx,而前端的nginx沒有開啟gzip。
同時,我們後端的nginx上沒有設定gzip_http_version為1.0,那麼cache的url將不會進行gzip壓縮。
我相信,以後還有人會入坑,比如你用apache ab做壓測,如果不是設定gzip_http_version為1.0,你也壓不出gzip的效果(同樣的道理)。希望寫在這裡對大家有幫助
nginx做為反向**的時候啟用:
增加響應頭」vary: accept-encoding」
設定需要壓縮的mime型別,如果不在設定型別範圍內的請求不進行壓縮
參考文章
所以mime-type中應該新增字型型別:
字型型別副檔名
content-type
.eot
.ttf
font/ttf
.otf
font/opentype
.woff
font/x-woff
.svg
image/svg+xml
Nginx gzip引數配置
nginx實現資源壓縮的原理是通過ngx http gzip module模組攔截請求,並對需要做gzip的型別做gzip,ngx http gzip module是nginx預設整合的.1.開啟壓縮.引數寫法 syntax gzip on off default gzip off 應用作用域 co...
c std bind 詳解及引數解析
bind std function.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include 學習bind的用法 void f int n1,int n2,int n3,const int n4,int n5 int g i...
std bind 詳解及引數解析
bind std function.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include 學習bind的用法 void f int n1,int n2,int n3,const int n4,int n5 int g i...