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

asp.net页面压缩的更多相关文章

  1. 如何提高ASP.NET页面载入速度的方法

    前言 本文是我对ASP.NET页面载入速度提高的一些做法,这些做法分为以下部分: 1.采用 HTTP Module 控制页面的生命周期. 2.自定义Response.Filter得到输出流stream ...

  2. net面试 ASP.NET页面传值的各种方法和分析 (copy)

    Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题 ...

  3. ASP.NET页面优化,提高载入速度[转]

      ASP.NET页面载入速度提高的一些做法: 1.采用 HTTP Module 控制页面的生命周期. 2.自定义Response.Filter得到输出流stream生成动态页面的静态内容(磁盘缓存) ...

  4. 详细介绍ASP.NET页面间数据传递的使用方法

    源码:http://www.jinhusns.com/Products/Download/?type=xcj 在ASP.NET中,页面间数据传递的方法有很多.下面为大家总结一下,页面间数据传递的方法. ...

  5. ASP.NET页面间传值总结

    本文我们将讨论的是ASP.NET页面间数据传递的几种方法,对此希望能帮助大家正确的理解ASP.NET页面间数据传递的用处以及便利性. Web页面是无状态的,服务器对每一次请求都认为来自不同用户,因此, ...

  6. ASP.NET页面间数据传递的方法<转>

    ASP.NET页面间数据传递的方法 作者: 灰色的天空2  来源: 博客园  发布时间: 2010-10-28 11:06  阅读: 822 次  推荐: 0   原文链接   [收藏]   摘要:本 ...

  7. ASP.NET 页面间数据传递的方法

    在做WEB开发时,很多地方会涉及到页面间的数据传递.这几天在完善教务基础系统,遇到了这个问题,上网查了一些资料,现总结如下: 说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是 ...

  8. 提高ASP.NET页面载入速度的方法

    前言 本文是我对ASP.NET页面载入速度提高的一些做法,这些做法分为以下部分: 目录 1.采用 HTTP Module 控制页面的生命周期. 2.自定义Response.Filter得到输出流str ...

  9. Asp.net gzip压缩的启用

    gzip压缩使用一种压缩算法,对网页内容进行压缩,从而减小了网页体积.使用gizp压缩后减小了服务器的带宽.提高了网页的打开速度.下边看看我找到的一个asp.net中启用gzip压缩方案. 首先,我们 ...

随机推荐

  1. Struts2使用Interceptor实现权限控制的应用实例详解

    Struts2使用Interceptor实现权限控制的应用实例详解 拦截器:是Struts2框架的核心,重点之重.因此,对于我们要向彻底学好Struts2.0.读源码和使用拦截器是必不可少的.少说了. ...

  2. eclipse安装svn插件,在输入url后,一直卡在in progress界面不懂。

    今天遇到上面的情况.网上找了半天都没有找到解决的办法.后来,仔细比对了一下我的eclipse版本和svn版本.发现svn版本真的太老了.用上新的svn后,立马就可以用了 svn - http://su ...

  3. canvas、image src、data url、blob file conversion

    //canvas.toDataURL('image/jpeg'), and convert to blob,blob is a File Object. but UC don't support fu ...

  4. UVA 1345 Jamie's Contact Groups

    题意: 一些人,和他们可能加入的组号.问每个组,最小的最大人数是多少 分析: 二分的是最大流的容量.设置一个超级源点,连向所有的人,容量为1.设置一个超级汇点,使所有的组连向超级汇点,二分的就是这里的 ...

  5. tomcat日志分析详解

    在server.xml里的<host>标签下加上 <Valve className="org.apache.catalina.valves.AccessLogValve&q ...

  6. css基础之 语法

    CSS 实例 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: 选择器通常是您需要改变样式的 HTML 元素. 每条声明由一个属性和一个值组成. 属性(property)是您希望设置的样 ...

  7. [汇编语言]-第九章 jcxz,loop指令,转移位移的意义

    1- jcxz指令 指令为有条件转移指令, 所有的有条件转移指令都是短转移, 在对应的机器码中包含转移的位移, 而不是目的地址, 对IP的修改范围为: -128 ~ 127 指令格式: jcxz 标号 ...

  8. python super研究

    # encoding=utf-8 class A(object): def __init__(self): print "初始化a" def run(self): print &q ...

  9. MVC WebApi 用户验证 (2)

    构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(66)-MVC WebApi 用户验证 (2)   前言: 构建ASP.NET MVC5+EF6+E ...

  10. Oracle EBS-SQL (PO-13):检查报价单.sql

    select          pha.segment1                     报价单号     -- ,pha.end_date     -- ,decode(pha.status ...