在網上看了有關這方面的博客,再加上自己的實踐,整理了一下,希望對大家有所幫助
本片文章采用兩種壓縮方法:一種是在IIS上開啟GZIP壓縮,另一種方法是用CompressionModule壓縮模塊。下面我將分別對IIS 6.0 和 IIS 7.0 的兩種方法進行舉例。
IIS 6.0
部署IIS 6.0 開啟GZIP壓縮
1、打開Internet信息服務(IIS)管理器,右擊“網站”-->屬性”,選擇“服務”。進行如圖一配置:
圖一
2、在Internet信息服務(IIS)管理器,右擊“Web服務擴展”-->“添加一個新的Web服務擴展”,在“新建Web服務擴展”框中輸入擴展名“HTTP Compression”,添加“要求的文件”為C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系統目錄根據您的安裝可能有所不同,選中“設置擴展狀態為允許”;(見圖二)
圖二
3、使用文本編輯器打開C:\Windows\System32\inetsrv\MetaBase.xml(建議先備份),
找到Location =“/LM/W3SVC/Filters/Compression/gzip用於設置gzip壓縮
如果需要壓縮動態文件,則將HcDoDynamicCompression設置為”TRUE“,
並在HcScriptFileExtensions中增加您要壓縮的動態文件后綴名,如aspx;
如果需要壓縮靜態文件,則將HcDoStaticCompression和HcDoOnDemandCompression設置為”TRUE“,
並在HcFileExtensions中增加您需要壓縮的靜態文件后綴名,如xml、css等;
HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的壓縮率,數值在0-10, 默認為0。
HcDynamicCompressionLevel屬性說明:HcDynamicCompressionLevel Metabase Property
HcOnDemandCompLevel 屬性說明:HcOnDemandCompLevel Metabase Property
說明: 這兩個屬性值一般推薦設置為9, 具有最佳性價比。
</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 js css swf html txt" HcOnDemandCompLevel="9" HcPriority="1" HcScriptFileExtensions="asp aspx dll exe" > </IIsCompressionScheme>
注意:
1、在編輯MetaBase.xml前需要停止IIS(開始-->管理工具 --> 服務 找到 IIS Admin Service然后停止)
2、修改完成后開啟IIS Admin Service
CompressionModule壓縮模塊
1、首先,將DC.Web.HttpCompress.dll放到項目的bin目錄。
2、配置web.config代碼如下:

<configSections> <sectionGroup name="DCWeb"> <section name="HttpCompress" type="DC.Web.HttpCompress.Configuration, DC.Web.HttpCompress" /> </sectionGroup> </configSections> <DCWeb> <HttpCompress compressionType="GZip"> <IncludedMimeTypes> <add mime="text/html" /> </IncludedMimeTypes> </HttpCompress> </DCWeb> <system.web> <httpHandlers> <add verb="*" path="js.axd,css.axd" type="DC.Web.HttpCompress.CompressionHandler,DC.Web.HttpCompress"/> <add verb="*" path="*.gif" type="DC.Web.HttpCompress.ImageHandler,DC.Web.HttpCompress"/> </httpHandlers> <httpModules> <add name="HttpCompressModule" type="DC.Web.HttpCompress.HttpModule,DC.Web.HttpCompress"/> </httpModules> </system.web>
IIS 7.0
部署IIS 7.0 開啟GZIP壓縮:如圖三
圖三
圖四
CompressionModule壓縮模塊
1、首先,將DC.Web.HttpCompress.dll放到項目的bin目錄。
2、配置web.config代碼如下:

1 <configSections> 2 <sectionGroup name="DCWeb"> 3 <section name="HttpCompress" type="DC.Web.HttpCompress.Configuration, DC.Web.HttpCompress" /> 4 </sectionGroup> 5 </configSections> 6 7 <DCWeb> 8 <HttpCompress compressionType="GZip"> 9 <!--設定是否啟用cachefiles功能,並指定cache目錄,默認為false--> 10 <CacheSettings cacheFiles="true" path="cache" /> 11 <!--設定jspath及csspath,實際應用中可以不設置--> 12 <PathSettings jsPath="kendo/js" cssPath="css" /> 13 <!--設定要壓縮何種類型的資源,這里設定了壓縮html和javascript,即除了aspx頁面(包括所有axd資源)和js外,其它資源不會被壓縮,例:如果要壓縮gif,請添加<add mime="image/gif"/>--> 14 <!--javascript有很多種表現類型,具體可以借助工具查看其類型--> 15 <IncludedMimeTypes> 16 <add mime="text/html" /> 17 <add mime="application/x-javascript" /> 18 </IncludedMimeTypes> 19 <!--設定不壓縮何種類型資源請使用:--> 20 <!--<ExcludedMimeTypes> 21 <add mime="text/html" /> 22 <add mime="application/x-javascript" /> 23 </ExcludedMimeTypes>--> 24 <!--設定不啟用壓縮的頁面路徑,下面設定了Test目錄下的default.aspx頁面將不會啟用壓縮功能,但其它頁面則正常啟用壓縮--> 25 <!--<ExcludedPaths> 26 <add path="~/Test/Default.aspx" /> 27 </ExcludedPaths>--> 28 </HttpCompress> 29 </DCWeb> 30 31 <system.webServer> 32 <handlers> 33 <add name="DC.Web.HttpCompress" verb="*" path="js.axd,css.axd" type="CompressionHandler"/> 34 </handlers> 35 <modules> 36 <!--設定啟用壓縮模塊的參數--> 37 <add name="HttpCompressModule" type="DC.Web.HttpCompress.HttpModule,DC.Web.HttpCompress"/> 38 </modules> 39 </system.webServer>
注意:
1、ExcludedMimeTypes及IncludedMimeTypes只需要配置一個就可以,如果像上面那樣配置的話,則表明html和javascript類型被壓縮。
2、<CacheSettings cacheFiles="true" path="cache"/>
那么項目下就必須存在cache這個目錄,否則的話會出錯,如果項目不想增加這個目錄,只需要將這個配置節刪掉即可!
測試結果:
在IIS 7.0 中使用CompressionMoudule壓縮,壓縮率為53.3%
在IIS 6.0 中開啟GZIP壓縮的壓縮率為: 67.3%(可根據在MetaBase.xml文件中的參數進行改變)
總結:
在IIS 7.0中使用CompressionModule壓縮模塊時引用的DC.Web.HttpCompress.dll可以壓縮js、css文件。但在IIS 6.0中使用DC.Web.HttpCompress.dll文件時,對js、css文件就不起作用了。因此有個CompressionModule修復版。
參考博客:
CompressionModule修復版:http://blog.csdn.net/gulijiang2008/article/details/7089076(可以下載修復版的dll文件)
CompressionModule壓縮模塊:http://www.cnblogs.com/0000/archive/2009/05/22/1487376.html
部署IIS 6.0開啟GZIP壓縮:http://www.chinaz.com/server/2010/1026/139740.shtml