咱們知道作好負載均衡對網站的正常運行,用戶體驗至關重要。在負載均衡中有一個必需要作的事情就是給服務器開啓GZIP壓縮功能,對用戶請求的頁面進行壓縮處理,以達到節省網絡帶寬,提升網站速度的做用。javascript
GZIP是若干文件壓縮程序的簡稱,一般指GNU計劃的實現,此處的GZIP表明的就是GUN ZIP,這也是HTTP1.1協議定義的兩種壓縮方法中最經常使用的一種壓縮方法,客戶端瀏覽器大都支持這種壓縮格式。接下來,DNSLA將介紹apache、IIS、nginx 這些如今流行的web服務器如何開啓GZIP壓縮的方法。php
Apache開啓GZIP要看查看是否已經開啓mod_deflate模塊,若是沒有則須要先加載,在配置文件httpd.conf中將css
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
複製代碼
前面的#號去掉。DNSLA建議,若是對apache的配置文件不太懂的客戶在修改配置文件以前對配置文件進行備份。html
開啓模塊後,在httpd.conf配置文件的最下面空白處添加一下內容:java
<IfModule mod_deflate.c> # 告訴 apache 對傳輸到瀏覽器的內容進行壓縮 SetOutputFilter DEFLATE # 壓縮等級 9 DeflateCompressionLevel 9 </IfModule> 複製代碼
這樣就能對全部文件進行 gzip 壓縮了。壓縮等級是個 1-9 之間的整數,取值範圍在 1(最低) 到 9(最高)之間,不建議設置過高,雖然有很高的壓縮率,可是佔用更多的CPU資源。nginx
實際開發中咱們並不須要對全部文件進行壓縮,好比咱們無需對圖片文件進行gzip壓縮,由於圖片文件(通常爲jpg、png等格式)自己已經壓縮過了,再進行gzip壓縮可能會拔苗助長(詳見圖片要啓用gzip壓縮嗎?絕對不要!,背景圖片千萬不要gzip壓縮,尤爲是PNG),相似的還有 PDF 以及音樂文件。因此咱們能夠設置過濾指定文件或者對指定文件進行壓縮。web
好比咱們要對圖片等特殊文件不進行 gzip 壓縮處理:apache
<IfModule mod_deflate.c> # 告訴 apache 對傳輸到瀏覽器的內容進行壓縮 SetOutputFilter DEFLATE # 壓縮等級 9 DeflateCompressionLevel 9 #設置不對後綴gif,jpg,jpeg,png的圖片文件進行壓縮 SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary </IfModule> 複製代碼
或者指定文件格式進行壓縮:windows
<IfModule mod_deflate.c> # 壓縮等級 9 DeflateCompressionLevel 9 # 壓縮類型 html、xml、php、css、js AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php AddOutputFilter DEFLATE js css </IfModule> 複製代碼
其中DeflateCompressionLevel
的意思是壓縮等級,共分爲1-9,9級爲最高,不建議使用過高的壓縮比,這樣會對CPU產生太大的負擔。瀏覽器
打開IIS管理工具,在右鍵網站打開網站屬性,在服務選項卡中開啓HTTP壓縮,不建議選中壓縮應用程序文件,但必定要選上壓縮靜態文件,否則就等於沒有壓縮,達不到負載均衡了。而後選中我那個站下面那個服務器擴展,新建一個服務器擴展,名字爲GZIP,下面的添加文件路徑爲:c:\windows\system32\inetsrv\gzip.dll,而後啓用這個擴展。DNSLA提醒你們,還沒結束,第三步是,咱們要修改配置文件,在配置文件以前要中止IIS服務,(DNSLA提醒你們必定要先關閉IIS服務)打開C:\Windows\System32\inetsrv\MetaBase.xml,這個文件很大,找到下面一段信息:
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip" HcCompressionDll="%windir%\system32\inetsrv\gzip.dll" HcCreateFlags="1" HcDoDynamicCompression="TRUE" HcDoOnDemandCompression="TRUE" HcDoStaticCompression="TRUE" HcDynamicCompressionLevel="0" HcFileExtensions="htm html txt" HcOnDemandCompLevel="10" HcPriority="1" HcScriptFileExtensions="asp dll exe" > </IIsCompressionScheme> 複製代碼
修改這個文件是要增長一些要進行壓縮的文件後綴,其中 HcFileExtensions 是靜態文件的擴展名,增長 js 和 css 等;HcScriptFileExtensions 爲動態文件的擴展名,增長 aspx,HcDynamicCompressionLevel改爲9,(0-10,6是性價比最高的一個)。
而後須要重啓一下IIS服務便可。
相對apache 和 IIS nginx開啓GZIP簡單不少,只須要打開配置文件 nginx.conf找到gzip on 把前面的註釋符號#去掉便可開啓GZIP服務。而後配置GZIP便可。
下面是一個相對優化不錯的配置,DNSLA建議使用。
Gzip on;
gzip_min_length 1024;
gzip_buffers 4 8k;
gzip_types text/plain application/x-javascript text/css application/xml;
複製代碼