1. 程式人生 > >linux Nginx配置篇:gzip常用引數詳解(附使用效果驗證過程)

linux Nginx配置篇:gzip常用引數詳解(附使用效果驗證過程)

gzip模組是使用“gzip”方法壓縮響應的過濾器,有助於將響應傳輸的資料大小減少一半甚至更多,能有效的緩解頻寬及流量問題。以下內容均翻譯於官網使用者手冊,介紹了gzip的一些常用引數,更多配置資訊可以直接訪問官網進行檢視:http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip

1.引數項:gzip

引數值:on(啟用gzip壓縮) | off(停用gzip壓縮),開啟壓縮後,可以看到http響應頭的Content-Encoding值為gzip

預設值:off

作用域(即可配置的地方):http,server,location,if in location

使用效果對比,這裡我請求的是我們專案中的某個css檔案,有興趣的童鞋可以自己試下:

gzip off:該css檔案實際大小約為119.67k,傳輸119.67k


gzip on:開啟gzip壓縮後,同一個css檔案,傳輸縮小了近5倍,這是單個檔案,可想而知在實際部署中,開啟gzip對我們的頻寬和使用者體驗是有很大幫助的。


2.引數項:gzip_comp_level(壓縮比)

引數值:1-9的正整數,1最低,壓縮時間短,9最高,壓縮時間長,吃cpu,但是壓縮效果好,實質是用cpu換流量,視情況而用。

預設值:1

作用域:http,server,location

使用效果對比:我這裡只取了最低1和最高9兩個壓縮比進行壓縮效果的比較,未比較對cpu的消耗,因為測試過程中發現配1或配9,對大檔案或者小檔案進行壓縮時,cpu消耗差距不是很明顯,在此不給結論,有興趣的童鞋可以自己試試。

另外我這裡遇到個問題,有興趣的童鞋可以在評論區一起討論下,下面測試1VS9的壓縮效果我用的是常規檔案,後面我換了張128MB的大圖片,配9的壓縮效果反而沒有配1的壓縮效果好,附圖片網盤地址,有興趣的童鞋可以下載來試下:http://pan.baidu.com/s/1bIaAb8

gzip_comp_level 1:傳輸24.74k

 

gzip_comp_level 9:傳輸19.25k


3.引數項:gzip_min_length

引數值:正整數,單位為位元組,也可用k表示千位元組,比如寫成1024與1k都可以,效果是一樣的,表示當資源大於1k時才進行壓縮,資源大小取響應頭中的Content-Length進行比較,經測試如果響應頭不存在Content_length資訊,該限制引數對於這個響應包是不起作用的;另外此處引數值不建議設的太小,因為設的太小,一些本來很小的檔案經過壓縮後反而變大了,官網沒有給出建議值,在此建議1k起,因為小於1k的也沒必要壓縮,並根據實際情況來調整設定。

預設值:20,單位位元組

作用域:http,server,location

使用效果對比:還是用上面測試的那個css檔案,檔案實際大小為119.67KB,我這裡把gzip_min_length值分別配成120k,119k測試該引數使用效果。

 gzip_min_length 120k:css檔案大小未達到該值,不壓縮


gzip_min_length 119k:css檔案已達到該值,壓縮


4.引數項:gzip_http_version

引數值:1.0 | 1.1,注意,此處只能是1.0,或者1.1。設定壓縮響應所需的最小http協議版本。

預設值:1.1

作用域:http,server,location

5.引數項:gzip_types

引數值:響應報文資料格式,或者說型別,對應http響應頭中的Content-type欄位,如常見的有text/html、text/css、application/json、application/javaScript等。用於指定要壓縮的響應報文型別。”*”表示壓縮所有格式的響應報文,多種格式用空格隔開。如text/html text/css。

預設值:text/html

作用域:http,server,location

另外需要注意的是,gzip引數的作用域優先順序是內層高於外層的,也就是說,如果http下配了gzip引數,location下也配了,最終是以location中的配置為準的。