在IIS上啟用Gzip壓縮詳細(xì)方法(HTTP壓縮)
本文總結(jié)了如何為使用IIS托管的網(wǎng)站啟用Gzip壓縮, 從而減少網(wǎng)頁網(wǎng)絡(luò)傳輸大小, 提高用戶顯示頁面的速度.
二.前言.
本文的知識(shí)點(diǎn)是從互聯(lián)網(wǎng)收集整理, 主要來源于中文wiki. 使用YSlow檢測網(wǎng)站啟用了哪些優(yōu)化時(shí), Gzip是十分關(guān)鍵的一項(xiàng). 啟動(dòng)Gip壓縮將立竿見影的減少頁面的網(wǎng)絡(luò)傳輸大小.
三.HTTP壓縮概述
HTTP壓縮是在Web服務(wù)器和瀏覽器間傳輸壓縮文本內(nèi)容的方法。HTTP壓縮采用通用的壓縮算法如gzip等壓縮HTML、JavaScript或CSS文件。壓縮的最大好處就是降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,從而提高客戶端瀏覽器的訪問速度。當(dāng)然,同時(shí)也會(huì)增加一點(diǎn)點(diǎn)服務(wù)器的負(fù)擔(dān)。Gzip是比較常見的一種HTTP壓縮算法。
四.HTTP壓縮工作原理
Web服務(wù)器處理HTTP壓縮的工作原理如下:
1.Web服務(wù)器接收到瀏覽器的HTTP請求后,檢查瀏覽器是否支持HTTP壓縮;
在用戶瀏覽器發(fā)送請求的HTTP頭中, 帶有"Accept-Encoding: gzip, deflate"參數(shù)則表明支持gzip和deflate兩種壓縮算法.
2.如果瀏覽器支持HTTP壓縮,Web服務(wù)器檢查請求文件的后綴名;
靜態(tài)文件和動(dòng)態(tài)文件后綴啟動(dòng)要所都需要在MetaBase.xml中設(shè)置.
靜態(tài)文件需要設(shè)置: HcFileExtensions Metabase Property (單擊跳轉(zhuǎn)到MSDN說明)
動(dòng)態(tài)文件需要設(shè)置: HcScriptFileExtensions Metabase Property (單擊跳轉(zhuǎn)到MSDN說明)
3.如果請求文件是HTML、CSS等靜態(tài)文件并且文件后綴啟用了壓縮,則Web服務(wù)器到壓縮緩沖目錄中檢查是否已經(jīng)存在請求文件的最新壓縮文件;
4.如果請求文件的壓縮文件不存在,Web服務(wù)器向?yàn)g覽器返回未壓縮的請求文件,并在壓縮緩沖目錄中存放請求文件的壓縮文件;
5.如果請求文件的最新壓縮文件已經(jīng)存在,則直接返回請求文件的壓縮文件;
6.如果請求文件是ASPX等動(dòng)態(tài)文件并且文件后綴啟用了壓縮,Web服務(wù)器動(dòng)態(tài)壓縮內(nèi)容并返回瀏覽器,壓縮內(nèi)容不存放到壓縮緩存目錄中。
五. 在IIS中啟用HTTP壓縮
IIS默認(rèn)并不支持HTTP壓縮,需要進(jìn)行簡單的配置
1.打開Internet信息服務(wù)(IIS)管理器,右擊"網(wǎng)站"->"屬性",選擇"服務(wù)"。在"HTTP壓縮"框中選中"壓縮應(yīng)用程序文件"和"壓縮靜態(tài)文件",按需要設(shè)置"臨時(shí)目錄"和"臨時(shí)目錄的最大限制";
2.提醒: 經(jīng)試驗(yàn)此步驟在本人機(jī)器上沒有作用, 可以忽略.
在Internet信息服務(wù)(IIS)管理器,右擊"Web服務(wù)擴(kuò)展"->"增加一個(gè)新的Web服務(wù)擴(kuò)展...",在"新建Web服務(wù)擴(kuò)展"框中輸入擴(kuò)展名"HTTP Compression",添加"要求的文件"為C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系統(tǒng)目錄根據(jù)您的安裝可能有所不同,選中"設(shè)置擴(kuò)展?fàn)顟B(tài)為允許";
3.使用文本編輯器打開C:\Windows\System32\inetsrv\MetaBase.xml(建議先備份),
找到Location ="/LM/W3SVC/Filters/Compression/gzip用于設(shè)置gzip壓縮,
找到Location ="/LM/W3SVC/Filters/Compression/deflate"用于設(shè)置deflate壓縮.
上面兩個(gè)節(jié)點(diǎn)緊挨著.并且設(shè)置的屬性相同.
如果需要壓縮動(dòng)態(tài)文件,則將HcDoDynamicCompression設(shè)置為"TRUE",并在HcScriptFileExtensions中增加您要壓縮的動(dòng)態(tài)文件后綴名,如aspx;如果需要壓縮靜態(tài)文件,則將HcDoStaticCompression和HcDoOnDemandCompression設(shè)置為"TRUE",并在HcFileExtensions中增加您需要壓縮的靜態(tài)文件后綴名,如xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的壓縮率,數(shù)值在0-10, 默認(rèn)為0.
HcDynamicCompressionLevel屬性說明:HcDynamicCompressionLevel Metabase Property
HcOnDemandCompLevel 屬性說明:HcOnDemandCompLevel Metabase Property
說明: 這兩個(gè)屬性值一般推薦設(shè)置為9, 具有最佳性價(jià)比.但是在我的window server 2003上, 壓縮率無論如何設(shè)置, jQuery和jQuery UI兩個(gè)文件(58k/188k)壓縮后的大小一直相同.(20k/45k).
下面是我的實(shí)例:
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="0"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="true"
HcDynamicCompressionLevel="9"
HcFileExtensions="htm
html
txt
js
css
swf
xml"
HcOnDemandCompLevel="9"
HcPriority="1"
HcScriptFileExtensions="asp aspx
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="9"
HcFileExtensions="htm
html
txt
js
css
swf
xml"
HcOnDemandCompLevel="9"
HcPriority="1"
HcScriptFileExtensions="asp aspx
dll
exe"
>
</IIsCompressionScheme>
4.編輯完畢后保存MetaBase.xml文件;如果文件無法保存,則可能IIS正在使用該文件。打開"開始"->"管理工具"->"服務(wù)",停止"IIS Admin Service"后,即可保存;
5.最后,重新啟動(dòng)IIS??梢缘紿TTP壓縮測試網(wǎng)站驗(yàn)證結(jié)果.以jQuery為例, 核心類庫和UI類庫原始大小分別是57k和188k,壓縮后分別是20k和45k:
我們通過Http頭中的: Content-Encoding:gzip 屬性判斷返回后的數(shù)據(jù)已經(jīng)啟用了gzip壓縮:
使用YSlow檢測, 當(dāng)只啟動(dòng)靜態(tài)文件壓縮時(shí), Gzip壓縮評(píng)級(jí)為B:
當(dāng)同時(shí)啟動(dòng)了動(dòng)態(tài)文件壓縮時(shí), Gzip壓縮評(píng)級(jí)為A:
六.要點(diǎn)總結(jié)
1. 在修改MetaBase.xml文件時(shí), 要停止"IIS Admin Service"服務(wù). 否則無法保存.
2.靜態(tài)壓縮和動(dòng)態(tài)壓縮率最好設(shè)置為9.
3.上文的步驟2, 即使不添加Web服務(wù)擴(kuò)展效果也是相同的.
4.壓縮率設(shè)置對js文件不起作用, 壓縮后大小總是相同的.
5.圖片文件即使啟用了gzip壓縮大小也沒有變化.
七. 總結(jié)
本文總結(jié)了如何在IIS中啟用Gzip壓縮. 在半年前的項(xiàng)目中我為網(wǎng)站啟用了Gzip, 今天整理此文主要為了整理自己的知識(shí)以便以后忘記時(shí)復(fù)習(xí). 另外經(jīng)查看ChinaCache公司提供的CDN也都啟用了Gzip壓縮.
啟用IIS6的GZIP功能,提高網(wǎng)站打開速度,減少帶寬占用
使用vbs+cmd,全自動(dòng)實(shí)現(xiàn),如果一個(gè)東西不常用,但很有用,還是把他做成一健式的,這樣以后即便忘記也無所謂,反正可以一健100%成功。
http://xiazai.jb51.net/201101/tools/IIS6-SET-GZIP.rar
相關(guān)文章
win2003 iis asp.net偽靜態(tài)配置圖解
vps主機(jī)客戶和服務(wù)器托管用戶最近問的windows配置偽靜態(tài)問題較多,現(xiàn)在總結(jié)windows配置偽靜態(tài)圖解一篇,希望可以幫助更多的朋友2012-01-01本地電腦向遠(yuǎn)程windows服務(wù)器傳輸文件的三種方法匯總
這篇文章主要介紹了本地電腦向windows服務(wù)器傳輸文件的三種方法匯總(本地電腦與遠(yuǎn)程windows服務(wù)器傳輸文件的方式)的相關(guān)資料,需要的朋友可以參考下2023-04-04Content-Location文件頭定義方法(防止內(nèi)部IP地址泄漏二法)
當(dāng)訪問IIS網(wǎng)站上的靜態(tài)HTML文件時(shí),比如index.htm,IIS響應(yīng)中會(huì)包含一個(gè)Content-Location文件頭,為了安全等考慮我們可以自定義不讓別人知道我們的默認(rèn)頁面地址2012-07-07提示iis 無法啟動(dòng)World Wide Web Publishing服務(wù)的解決辦法
今天裝IIS組件,結(jié)果網(wǎng)站和ftp都啟動(dòng)不了,看看服務(wù),World Wide Web Publishing 服務(wù)沒有啟動(dòng),F(xiàn)TP Publishing服務(wù)也沒有啟動(dòng),于是我手動(dòng)啟動(dòng)World Wide Web Publishing 服務(wù),郁悶的是,系統(tǒng)提示:無法啟動(dòng)World Wide Web Publishing服務(wù),錯(cuò)誤 87 , 參數(shù)不正確;2008-11-11服務(wù)器云主機(jī)VPS之iis不支持.flv文件在線播放的解決方法
這篇文章主要介紹了服務(wù)器云主機(jī)VPS之iis不支持.flv文件在線播放的解決方法,需要的朋友可以參考下2023-07-07IIS7 網(wǎng)站發(fā)布常見報(bào)錯(cuò)問題解決方案匯總
這篇文章主要為大家詳細(xì)介紹了IIS7網(wǎng)站發(fā)布常見問題及解決方案,感興趣的小伙伴們可以參考一下2016-08-08卸載ZkeysPHP 后iis網(wǎng)站出現(xiàn)Service Unavailable 解決辦法
原來的客戶安裝了ZkeysPHP,由于需要做安全等一些方面考慮打算全手工配置服務(wù)器,所以就卸載了ZkeysPHP2012-04-04IIS提示出現(xiàn)RPC服務(wù)器不可用的解決方法
如果你運(yùn)行IIS時(shí)也遇到“RPC服務(wù)器不可用”的故障提示,不妨試試我們下面的辦法2011-10-10