現代的瀏覽器IE6和Firefox都支援用戶端Gzip,也就是說,在伺服器上的網頁,傳輸之前,先使用Gzip壓縮再傳輸給用戶端,用戶端接收之後由瀏覽器解壓顯示,這樣雖然稍微佔用了一些伺服器和用戶端的CPU,但是換來的是更高的頻寬利用率。對於純文字來講,壓縮率是相當可觀的。如果每個使用者節約50%的頻寬,那麼你租用來的那點頻寬就可以服務多一倍的客戶了。
IIS6已經內建了Gzip壓縮的支援,可惜,沒有設定更好的管理介面。所以要開啟這個選項,還要費些功夫。
首先,如果你需要壓縮靜態檔案(HTML),需要在硬碟上建一個目錄,並給它“IUSR_機器名”這個使用者的寫入權限。如果壓縮動態檔案(PHP,asp,aspx)就不需要了,因為它的頁面是每次都動態產生的,壓縮完就放棄。然後在IIS管理器中,“網站”上面右鍵-屬性,不是下面的某個網站,而是整個網站。進入“服務”標籤,選上啟用動態內容壓縮,靜態內容壓縮。
然後選中網站下面那個伺服器擴充,建立一個伺服器擴充。名字無所謂,下面的添加檔案的路徑是:
c:\windows\system32\inetsrv\gzip.dll,然後啟用這個擴充。
這時候靜態內容是可以壓縮的,但是對於動態內容,aspx檔案卻不在壓縮範圍內。因為預設的可壓縮檔並沒有這個副檔名。而管理介面中你又找不到可以增加副檔名的地方,這時候只能去修改它的設定檔了。
在 c:\windows\system32\inetsrv\下面有個MetaBase.xml檔案,可以用記事本開啟,找到IIsCompressionScheme,有三個相同名字的段,分別是deflate,gzip,Parameters,第三段不用管它,前兩段有基本相同的參數,在這兩段的參數HcScriptFileExtensions下面都加上一行aspx,如果你有其它的動態程式要壓縮,也加在這裡。HcDynamicCompressionLevel改成9,(0-10,9是性價比最高的一個)。
讓Discuz速度再次提升 ——“開啟IIS Gzip壓縮”
以下方法將提升Discuz6.1壓縮率0.33%,雖然很小,但對於一些訪問量萬以上的網站,將可能是一個速度上的飛躍(未嘗試,所以是可能)。這裡之所以說Disczu6.1壓縮率提升0.33%,因為以下測試是在Discuz6.1下進行的,其他的建站程式一樣適用(但是,提升的百分比,就不得而知了,歡迎大家測試)
註:通過提高壓縮率,從而提升了使用者瀏覽網站的速度。
【以下是實際的資料測試結果】
未開啟任何Gzip時:
開啟了Discuz6.1背景Gzip壓縮:
開啟Windows2003 II6中Gzip壓縮:
通過以上資料對比,似乎提高了 0.33% 不足以說明什麼。個人覺得當是一個較大網站的時候(前提硬體滿足),開啟它會明顯使速度提高。(提升速度的同時,就是犧牲系統資源,所以如果伺服器的配置不是太好,需要調整相關參數)
以上資料來源於 http://www.pipeboost.com ,進入後在這個位置輸入網址:
【如何配置II6中Gzip壓縮?】
註:以下教程,部分不給予太多說明,只要按照以下配置,一般不會出現問題(由於自身在配置時,很順利,如果有遇到問題,首先請詳細核對步驟3次,如果都正確,依然問題存在的話,請回複告知)
如果你要進行測試或安裝,請一個一個字認真閱讀!
步驟一:
開啟II6介面 > 選擇“網站” > 右鍵屬性 > 選擇“服務”> 按照圖中打鉤
其中“臨時目錄的最大容量”與“臨時目錄”依據自身自行更改設定
特別注意,要給予臨時目錄 User許可權(寫入、修改、讀取)
步驟二:
選擇“Web服務擴充” > 在右側空白處右“鍵新Web服務擴充” > 按照圖輸入相關
“設定擴充狀態為可選”打鉤
“添加檔案”很可能由於每個人伺服器配置不同,請自行搜尋下(或者按照圖中打入,看看是否存在)
步驟三:
開始 > 運行中輸入 c:\windows\system32\inetsrv (如果錯誤,請按照圖中輸入)> 找到 MetaBase.xml
複製一份到案頭(並更改為 bak_MetaBase.xml),作為備份。
步驟四:
用文本等工具開啟 MeteBase.xml > 搜尋 Location ="/LM/W3SVC/Filters/Compression/gzip"
然後,你將看到如下代碼(仔細核對下段落)
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="0"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="FALSE"
HcDynamicCompressionLevel="0"
HcFileExtensions="htm
html
txt"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe"
>
</IIsCompressionScheme>
<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>
替換成:
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="10"
HcFileExtensions="html
css
js
htm
xml
txt"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="php
dll"
>
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="2"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="10"
HcFileExtensions="html
css
js
htm
xml
txt"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="php
dll"
>
</IIsCompressionScheme>
紅色部分為你要壓縮的檔案類型,請自行增加。上方為靜態類檔案,下方為動態類檔案。
藍色部分為壓縮等級,數值為 0-10 ,請自行根據伺服器硬體等環境來做調試(可以先用文章開頭時提到的網址,先測試並記錄“未開啟任何Gzip的數值”與“開啟Discuz6.1後台Gzip數值”,然後配置完成,再記錄“開啟IIS6下的Gzip時的數值”,3個就可以進行對比了)
然後請先儲存到案頭,名為 MeteBase.xml
步驟五:
我的電腦 > 控制台 > 管理工具 > 服務
找到 IIS Admin Service > 停止
步驟六:
回到找到 MeteBase.xml 的目錄,刪除它
步驟七:
在步驟四的最後,讓大家儲存到了案頭,現在我們剪下它。
步驟八:
回到剛才刪除 MeteBase.xml 的地方,把從案頭剪下的粘貼進來
步驟九:
在步驟五中,我們停止了 IIS Admin Service 服務,現在,我們點啟動它。(圖與步驟五一樣,所以請以實際的為準)
步驟十:
回到II6中,對其進行重啟IIS
步驟十一:
進入Discuz6.1後台,關閉 Gzip 壓縮(重要)
如果不關閉,壓縮效果將會降低 0.33% (不關閉,則就是2個Gzip壓縮了,而輸出時,將優先使用Discuz6.1背景,所以會下降,一定要關閉)
步驟十二:
更新Disucz6.1緩衝,勾選
到此,就配置完畢了!以上教程可能對於部分人來囉嗦,但出於配置考慮,比較詳細。另外Disucz6.1背景Gzip壓縮相當於壓縮等級 9,這裡我們調整成了10 。就我個人感覺,Discuz6.1後台開啟的Gzip壓縮會有比較明顯的點擊停頓,不過很可能能是人感覺,有興趣的朋友可以反覆測試一下!寫了3小時的教程,一些地方如果不足或錯誤,請指出,請勿用不文明的語言:)
謹慎開啟GZip加速 可能影響百度蜘蛛抓取
GZip是“GNU Zip”的縮寫,是由Jean-loupGailly開發的壓縮方式。“GZip加速”就是在頁面由伺服器傳送向用戶端之前先用GZip壓縮,然後到用戶端再進行解壓操作,由於傳輸資料量大大減小,下載速度當然有所提高。不過目前寬頻已經普及,這種技術並不會帶來明顯的速度提升。
由於該項功能需要在用戶端進行解壓縮,所以就需要搜尋引擎蜘蛛可以正確的解壓縮才能分析網頁中的內容,如果解壓縮失敗,那就會導致搜尋引擎蜘蛛抓取失敗,對此GZip的問題我進行了一次實驗。
這次我的實驗用了6個網站,網站都是保持每日更新,雖然不是原創,但是都是人工選擇性複製,並且進列名修改。其中有3個是我自己的,都放在了門戶通的伺服器上(開啟了GZip),一個是客戶的,放在他自己的伺服器中(開啟了GZip),還有兩個也是客戶的,放在購買的虛擬機器主機中(沒開啟GZip),經過兩個多月的收錄分析,開始收錄都正常,每周都保持增長,但在上周三大更新,開啟了GZip的4個網站,百度收錄都降低了60%左右,沒開啟GZip的兩個網站收錄大幅增長,這個周三大更新,開啟了GZip的4個網站,其中一個收錄只剩下了首頁,其餘三個收錄減少大約30頁左右,沒有開啟GZip的兩個網站收錄依舊大幅增長;這6個網站Google收錄都非常正常,沒有出現任何大波動,都平穩的提高收錄。
基於此次實驗,初步的驗證結果是Google可以完美的支援GZip壓縮,百度支援的並不太好,我估計可能是因為有的伺服器壓縮率過大可能導致蜘蛛的識別失敗,所以導致了伺服器日誌中大量的出現200 0 64記錄,以前我們對於200 064問題討論過很久,都沒有一個最終的結論,現在看來因為Gzip引起的可能性很大。
目前我已經將放在門戶通的網站轉移到了沒有開啟GZip的伺服器中,我會持續保持觀察,看看轉以後的收錄情況是否會有好轉。
監測下伺服器是否開啟了GZip的方法是隨便選擇該伺服器中的一個網站用“GZip偵查工具”檢查下即可知道結果。如果你的站也出現了收錄大幅下滑的癥狀,建議你去檢測下,看看是不是也開啟了GZip壓縮功能。