zoukankan      html  css  js  c++  java
  • asp.net页面压缩

    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:WINDOWSsystem32inetsrvgzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中“设置扩展状态为允许”;(见图二)

                                                                           图二

    3、使用文本编辑器打开C:WindowsSystem32inetsrvMetaBase.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%system32inetsrvgzip.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的配置
    <configSections>
    <sectionGroup name="DCWeb">
    <section name="HttpCompress" type="DC.Web.HttpCompress.Configuration, DC.Web.HttpCompress" />
    </sectionGroup>
    </configSections>

    <DCWeb>
    <HttpCompress compressionType="GZip">
    <!--设定是否启用cachefiles功能,并指定cache目录,默认为false-->
    <CacheSettings cacheFiles="true" path="cache" />
    <!--设定jspath及csspath,实际应用中可以不设置-->
    <PathSettings jsPath="kendo/js" cssPath="css" />
    <!--设定要压缩何种类型的资源,这里设定了压缩html和javascript,即除了aspx页面(包括所有axd资源)和js外,其它资源不会被压缩,例:如果要压缩gif,请添加<add mime="image/gif"/>-->
    <!--javascript有很多种表现类型,具体可以借助工具查看其类型-->
    <IncludedMimeTypes>
    <add mime="text/html" />
    <add mime="application/x-javascript" />
    </IncludedMimeTypes>
    <!--设定不压缩何种类型资源请使用:-->
    <!--<ExcludedMimeTypes>
    <add mime="text/html" />
    <add mime="application/x-javascript" />
    </ExcludedMimeTypes>-->
    <!--设定不启用压缩的页面路径,下面设定了Test目录下的default.aspx页面将不会启用压缩功能,但其它页面则正常启用压缩-->
    <!--<ExcludedPaths>
    <add path="~/Test/Default.aspx" />
    </ExcludedPaths>-->
    </HttpCompress>
    </DCWeb>

    <system.webServer>
    <handlers>
    <add name="DC.Web.HttpCompress" verb="*" path="js.axd,css.axd" type="CompressionHandler"/>
    </handlers>
    <modules>
    <!--设定启用压缩模块的参数-->
    <add name="HttpCompressModule" type="DC.Web.HttpCompress.HttpModule,DC.Web.HttpCompress"/>
    </modules>
    </system.webServer>


    复制代码
     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 

     

  • 相关阅读:
    API之绘图函数
    DotNetCharting
    Rule engine
    股票
    PHP
    获取Excel.dll
    Excel develop
    几个不错的开源的.net界面控件[转贴]
    关于EXCEL文件双击打不开的问题
    Regular expression
  • 原文地址:https://www.cnblogs.com/keyyang/p/3811807.html
Copyright © 2011-2022 走看看