http壓縮方法(IIS 6.0 與IIS 7.0的詳解)


在網上看了有關這方面的博客,再加上自己的實踐,整理了一下,希望對大家有所幫助

本片文章采用兩種壓縮方法:一種是在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代碼如下:

webconfig的配置
 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 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM