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