HTTP協議上的GZIP編碼是一種用來改進web應 用程序性能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓用戶感受更快的速度。這一般是指WWW服務器中安裝的一個功能,當有人來訪問這個服務 器中的網站時,服務器中的這個功能就將網頁內容壓縮後傳輸到來訪的電腦瀏覽器中顯示出來.一般對純文本內容可壓縮到原大小的40%.這樣傳輸就快了,效果 就是你點擊網址後會很快的顯示出來.當然這也會增加服務器的負載. 一般服務器中都安裝有這個功能模塊的。
減少文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間。gzip 是在 Linux 系統中經常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。
在Nginx安裝完成之後,我們可以開啓Gzip壓縮功能,這裏Nginx默認只能對text/html類型的文件進行壓縮。
下面的指令爲開啓Gzip的指令:
# 啓用 gzip 壓縮功能
gzip on;
# 默認值是1.1,就是說對HTTP/1.1協議的請求才會進行gzip壓縮
gzip_http_version 1.1;
gzip_vary on;
# 壓縮級別,1壓縮比最小處理速度最快,9壓縮比最大但處理最慢,同時也最消耗CPU,一般設置爲3就可以了
gzip_comp_level 6;
# nginx 做前端代理時啓用該選項,表示無論後端服務器的headers頭返回什麼信息,都無條件啓用壓縮
gzip_proxied any;
# 什麼類型的頁面或文檔啓用壓縮
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png;
# 最小壓縮的頁面,如果頁面過於小,可能會越壓越大,這裏規定大於1K的頁面才啓用壓縮
gzip_min_length 1024;
# 設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流
gzip_buffers 16 8k;
# 禁用IE6的gzip壓縮
gzip_disable "MSIE [1-6].(?!.*SV1)";
相關配置說明:
1、在gzip_http_version的默認值是1.1,就是說對HTTP/1.1協議的請求才會進行gzip壓縮。
如果使用了proxy_pass進行反向代理,那麼nginx和後端的upstream server之間是用HTTP/1.0協議通信的,如果使用nginx通過反向代理做Cache Server,前端的nginx沒有開啓gzip,且後端的nginx上未設置gzip_http_version爲1.0,那麼Cache的url將不會被gzip壓縮。
2、gzip_disable的設置是禁用IE6的gzip壓縮
IE6的某些版本對gzip的壓縮支持不是很好,會造成頁面的假死。對img進行gzip後會造成IE6的假死,把對img的gzip壓縮去掉後就正常了。爲了確保其它的IE6版本不出問題,所以加上了gzip_disable配置項。
3、gzip_min_length設置允許壓縮的頁面最小字節數,頁面字節數從header頭中的Content-Length中進行獲取。
默認值是0,不管頁面多大都壓縮。建議設置成大於1k的字節數,小於1k可能會越壓越大。 即: gzip_min_length 1024。