HTTP協議上的GZIP編碼是一種用來改進web應 用程序性能的技術。大流量的WEB站點經常使用GZIP壓縮技術來讓用戶感覺更快的速度。這通常是指WWW服務器中安裝的一個功能,當有人來訪問這個服務 器中的網站時,服務器中的這個功能就將網頁內容壓縮後傳輸到來訪的電腦瀏覽器中顯示出來.通常對純文本內容可壓縮到原大小的40%.這樣傳輸就快了,效果 就是你點擊網址後會很快的顯示出來.固然這也會增長服務器的負載. 通常服務器中都安裝有這個功能模塊的。javascript
減小文件大小有兩個明顯的好處,一是能夠減小存儲空間,二是經過網絡傳輸文件時,能夠減小傳輸的時間。gzip 是在 Linux 系統中常常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。css
在Nginx安裝完成以後,咱們能夠開啓Gzip壓縮功能,這裏Nginx默認只能對text/html類型的文件進行壓縮。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)";
相關配置說明:java
一、在gzip_http_version的默認值是1.1,就是說對HTTP/1.1協議的請求才會進行gzip壓縮。nginx
若是使用了proxy_pass進行反向代理,那麼nginx和後端的upstream server之間是用HTTP/1.0協議通訊的,若是使用nginx經過反向代理作Cache Server,前端的nginx沒有開啓gzip,且後端的nginx上未設置gzip_http_version爲1.0,那麼Cache的url將不會被gzip壓縮。web
二、gzip_disable的設置是禁用IE6的gzip壓縮json
IE6的某些版本對gzip的壓縮支持不是很好,會形成頁面的假死。對img進行gzip後會形成IE6的假死,把對img的gzip壓縮去掉後就正常了。爲了確保其它的IE6版本不出問題,因此加上了gzip_disable配置項。後端
三、gzip_min_length設置容許壓縮的頁面最小字節數,頁面字節數從header頭中的Content-Length中進行獲取。瀏覽器
默認值是0,無論頁面多大都壓縮。建議設置成大於1k的字節數,小於1k可能會越壓越大。 即: gzip_min_length 1024。