最近,使用Nginx做反向代理時,訪問網頁時,非常的慢,為了解決這個問題,分析原因,發現有個gzip,一直關着的,於是查了查,試了試,發現,16M被壓縮為4M多,首頁1秒內就能加載完成,現將該配置分項一下。
參數介紹
gzip on; 開啟gzip off關閉
gzip_min_length 1k; 設置允許壓縮的頁面最小字節(從header頭的Content-Length中獲取) 建議大於1k
gzip_buffers 4 16k; 以16k為單位,按照原始數據大小以16k為單位的4倍申請內存
gzip_http_version 1.1; 識別http協議的版本,早起瀏覽器可能不支持gzip自解壓,用戶會看到亂碼
gzip_comp_level 2; 等級1-9 最小的壓縮最快 但是消耗cpu
gzip_types text/plain application/x-javascript text/css application/xml; 匹配壓縮類型
gzip_vary on; 啟用應答頭"Vary: Accept-Encoding"
gzip_proxied off;
nginx做為反向代理時啟用,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_modefied(啟用壓縮,header頭中不包含"Last-Modified"),no_etag(啟用壓縮,如果header頭中不包含"Etag"頭信息),auth(啟用壓縮,如果header頭中包含"Authorization"頭信息)
gzip_disable msie6; (IE5.5和IE6 SP1使用msie6參數來禁止gzip壓縮 )指定哪些不需要gzip壓縮的瀏覽器(將和User-Agents進行匹配),依賴於PCRE庫
gzip 決定是否開啟gzip模塊
gzip_buffers 設置gzip申請內存的大小,其作用是按塊大小的倍數申請內存空間,param2:int(k) 后面單位是k
eg:gzip_buffers 4 8k;
gzip_comp_level 設置gzip壓縮等級,等級越底壓縮速度越快文件壓縮比越小,反之速度越慢文件壓縮比越大
gzip_min_length 當返回內容大於此值時才會使用gzip進行壓縮,以K為單位,當值為0時,所有頁面都進行壓縮
gzip_types 設置需要壓縮的MIME類型,非設置值不進行壓縮
param:text/html|application/x-javascript|text/css|application/xml
對於多數以文本為主的站點來說,文本自身內容占流量的絕大部分。雖然單個文本體積並不算大,但是如果數量眾多的話,流量還是相當可觀。啟用GZIP以后,可以大幅度減少所需的流量。
配置詳解
#開啟Gzip gzip on; #不壓縮臨界值,大於100K的才壓縮,這個按需改,壓縮要消耗cpu資源 gzip_min_length 100k; #壓縮在內存中緩沖幾塊? 每塊多大? gzip_buffers 4 16k; #默認是HTTP/1.1,用了反向代理的話,末端通信是HTTP/1.0 gzip_http_version 1.0; #壓縮級別,1-10,數字越大壓縮的越好,時間也越長 gzip_comp_level 2; #進行壓縮的文件類型 image/jpeg image/gif image/png 圖片建議不壓縮, gzip_types text/plain application/javascript text/cssapplication/xml application/x-javascript text/css application/xml text/javascript application/x-httpd-php; #on 的話會在Header里增加"Vary: Accept-Encoding" gzip_vary on; #IE6對Gzip不怎么友好,不給它Gzip了 gzip_disable "MSIE [1-6]\.";