`

在IIS上启用Gzip压缩(HTTP压缩)

阅读更多

 

转自:http://wjboy49.iteye.com/blog/501136

 

一.摘要

本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度.

 

二.前言.

本文的知识点是从互联网收集整理, 主要来源于中文wiki.  使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小.

 

三.HTTP压缩概述

HTTP 压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、JavaScript或CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP 压缩算法。

 

四.HTTP压缩工作原理

Web服务器处理HTTP压缩的工作原理如下:

1.Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
在用户浏览器发送请求的HTTP头中,  带有"Accept-Encoding: gzip, deflate"参数则表明支持gzip和deflate两种压缩算法.

2.如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;
静态文件和动态文件后缀启动要所都需要在MetaBase.xml中设置.
静态文件需要设置: HcFileExtensions Metabase Property (单击跳转到MSDN说明)
动态文件需要设置: HcScriptFileExtensions Metabase Property (单击跳转到MSDN说明)

3.如果请求文件是HTML、CSS等静态文件并且文件后缀启用了压缩,则Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;

4.如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;

5.如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;

6.如果请求文件是ASPX等动态文件并且文件后缀启用了压缩,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。

 

五. 在IIS中启用HTTP压缩

IIS默认并不支持HTTP压缩,需要进行简单的配置

1.打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务"。在"HTTP压缩"框中选中"压缩应用程序文件"和"压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制";
image

2.提醒: 经试验此步骤在本人机器上没有作用, 可以忽略.
在 Internet信息服务(IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展...",在"新建Web服务扩展"框中输入扩展名"HTTP Compression",添加"要求的文件"为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许";
image

3.使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),
找到Location ="/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,
找到Location ="/LM/W3SVC/Filters/Compression/deflate"用于设置deflate压缩.
上面两个节点紧挨着.并且设置的属性相同.

如果需要压缩动态文件,则将HcDoDynamicCompression设置为"TRUE",并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和 HcDoOnDemandCompression设置为"TRUE",并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如 xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0.
HcDynamicCompressionLevel属性说明:HcDynamicCompressionLevel Metabase Property
HcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property

说明: 这两个属性值一般推荐设置为9, 具有最佳性价比.但是在我的window server 2003上, 压缩率无论如何设置, jQuery和jQuery UI两个文件(58k/188k)压缩后的大小一直相同.(20k/45k). 

下面是我的实例:

 

 

Xml代码 复制代码
  1. <IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/deflate"  
  2.         HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"  
  3.         HcCreateFlags="0"  
  4.         HcDoDynamicCompression="TRUE"  
  5.         HcDoOnDemandCompression="TRUE"  
  6.         HcDoStaticCompression="true"  
  7.         HcDynamicCompressionLevel="9"  
  8.         HcFileExtensions="htm   
  9.                      html   
  10.                      txt   
  11.                      js   
  12.                      css    
  13.                      swf   
  14.                      xml"   
  15.         HcOnDemandCompLevel="9"  
  16.         HcPriority="1"  
  17.         HcScriptFileExtensions="asp    
  18.             aspx   
  19.             dll   
  20.             exe"   
  21.     >  
  22. </IIsCompressionScheme>  
  23. <IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/gzip"  
  24.         HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"  
  25.         HcCreateFlags="1"  
  26.         HcDoDynamicCompression="TRUE"  
  27.         HcDoOnDemandCompression="TRUE"  
  28.         HcDoStaticCompression="true"  
  29.         HcDynamicCompressionLevel="9"  
  30.         HcFileExtensions="htm   
  31.                      html   
  32.                      txt   
  33.                      js   
  34.                      css    
  35.                      swf   
  36.                      xml"   
  37.         HcOnDemandCompLevel="9"  
  38.         HcPriority="1"  
  39.         HcScriptFileExtensions="asp    
  40.             aspx   
  41.             dll   
  42.             exe"   
  43.     >  
  44. </IIsCompressionScheme>  
<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>

 

 

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

 

4.编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存;

 

5.最后,重新启动IIS。可以到HTTP压缩测试网站验证结果.以jQuery为例, 核心类库和UI类库原始大小分别是57k和188k,压缩后分别是20k和45k:
image
我们通过Http头中的: Content-Encoding:gzip 属性判断返回后的数据已经启用了gzip压缩:
image  
使用YSlow检测, 当只启动静态文件压缩时, Gzip压缩评级为B:
image  
当同时启动了动态文件压缩时, Gzip压缩评级为A:
image

六.要点总结

1. 在修改MetaBase.xml文件时, 要停止"IIS Admin Service"服务. 否则无法保存.

2.静态压缩和动态压缩率最好设置为9. 

3.上文的步骤2, 即使不添加Web服务扩展效果也是相同的.

4.压缩率设置对js文件不起作用, 压缩后大小总是相同的.

5.图片文件即使启用了gzip压缩大小也没有变化.

 

七. 总结

本文总结了如何在IIS中启用Gzip压缩.  在半年前的项目中我为网站启用了Gzip, 今天整理此文主要为了整理自己的知识以便以后忘记时复习. 另外经查看ChinaCache公司提供的CDN也都启用了Gzip压缩.

作者:张子秋
出处:http://www.cnblogs.com/zhangziqiu/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分享到:
评论

相关推荐

    IIS网页启用Gzip压缩 提高浏览速度 解决伪静态也可压缩 百度会正常收录

    本文将详细介绍如何在IIS中启用Gzip压缩,包括启用Gzip压缩的步骤、配置文件的修改等。同时,本文还将解释Gzip压缩的原理和优点,以及为什么伪静态页面也可以被压缩。 一、IIS中启用Gzip压缩的步骤 要在IIS中启用...

    IIS上启用Gzip压缩(HTTP压缩)

    ### IIS上启用Gzip压缩(HTTP压缩):深入解析与实践 #### 摘要与前言 在当今高速发展的互联网环境中,网站响应速度成为用户体验的关键因素之一。启用Gzip压缩(HTTP压缩)能够显著减少网页在网络上的传输大小,进而...

    IIS启用GZIP压缩js、css无效的原因及解决方法.docx

    本文主要探讨的是在IIS服务器上启用GZIP压缩针对JavaScript(js)和CSS文件无效的问题及其解决方案。 IIS(Internet Information Services)是微软提供的一个Web服务器,支持多种功能,包括GZIP压缩。当用户发现IIS...

    网站加速方法之IIS上启用Gzip压缩.docx

    网站加速方法之IIS上启用Gzip压缩

    网站加速方法之IIS上启用Gzip压缩.doc

    网站加速方法之IIS上启用Gzip压缩.doc

    在IIS上启用Gzip压缩详细方法(HTTP压缩)

    摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言. 本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检测网站启用了哪些优化时, ...

    IIS6.0开启gzip压缩功能

    IIS6.0开启gzip压缩功能,我还有一个7.0的方法。可以查看一下我的资源。

    一键开启Windows IIS GZIP压缩工具

    本文将详细讲解如何在Windows IIS上启用GZIP压缩以及涉及的相关知识点。 首先,我们需要理解GZIP压缩的工作原理。GZIP是一种通用的文件格式,用于无损数据压缩。在网络传输中,服务器通过GZIP算法对HTML、CSS、...

    在IIS上启用Gzip压缩 (HTTP压缩)第1/3页

    摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言. 本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检测网站启用了哪些优化时, ...

    IIS7.0开启gzip压缩

    完成上述步骤后,IIS 7.0就会根据你的配置对相应内容启用GZIP压缩。请注意,虽然GZIP压缩可以显著提升用户体验,但也会增加服务器CPU的使用率,因此在高负载环境中需要权衡压缩带来的益处和额外的计算成本。 最后,...

    IIS的Gzip压缩图文教程

    通过在IIS服务器上启用GZip压缩,可以显著提高网页加载速度并降低网络带宽消耗。这对于改善用户体验和提高网站的整体性能至关重要。遵循本文所述步骤进行配置后,即可轻松享受更快的网页加载速度带来的好处。

    IIS设置Gzip压缩 提高网站速度

    1、打开Internet信息管理器,右击”网站“...2、打开Web服务扩展,在其中增加Gzip压缩扩展并启用 3、设置IIS可进行压缩的文件类型,这一步骤比较繁杂,有一高人写了一个批处理文件,用来简化此操作,批处理内容如下

    在IIS6中启用压缩

    ### 在IIS6中启用压缩的关键知识点 #### 一、背景与重要性 - **问题描述**:在IIS6环境中,特别是在使用.NET技术开发的应用(例如HCS5.0)中,页面尺寸可能因为丰富的内容和技术特性而变得较大。在较差的网络环境...

    WIN2003下IIS6.0环境设置页面Gzip压缩.pdf

    标题提到的"WIN2003下IIS6.0环境设置页面Gzip压缩"是一个关于如何在Windows Server 2003上的Internet Information Services (IIS) 6.0中启用HTTP压缩,特别是使用Gzip算法来减小网页传输大小的技术主题。HTTP压缩是...

    iis6.0配置Gzip

    总结来说,配置IIS 6.0上的Gzip压缩是一项有效的优化策略,尤其对于高流量的网站而言,它可以显著降低带宽消耗,提高用户访问速度。然而,需要注意的是,过度的压缩可能会增加服务器CPU负担,因此需要在性能与带宽...

    iis必须组件gzip.dll

    为了在IIS中启用gzip压缩,管理员可能需要将这个文件放置在正确的系统目录,并且可能还需要修改IIS的配置设置。具体步骤通常包括: 1. 将gzip.dll复制到系统目录,如`C:\Windows\System32\inetsrv`。 2. 如果IIS...

Global site tag (gtag.js) - Google Analytics