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

一.摘要
本文总结了如何为使用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压缩"框中选中"压缩应用程序文件"和"压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制";

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压缩,
找到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). 

下面是我的实例: 


代码如下:

<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>

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

5.最后,重新启动IIS。可以到HTTP压缩测试网站验证结果.以jQuery为例, 核心类库和UI类库原始大小分别是57k和188k,压缩后分别是20k和45k:

我们通过Http头中的: Content-Encoding:gzip 属性判断返回后的数据已经启用了gzip压缩:
 
使用YSlow检测, 当只启动静态文件压缩时, Gzip压缩评级为B:
 
当同时启动了动态文件压缩时, Gzip压缩评级为A:
 
六.要点总结
1. 在修改MetaBase.xml文件时, 要停止"IIS Admin Service"服务. 否则无法保存.
2.静态压缩和动态压缩率最好设置为9.
3.上文的步骤2, 即使不添加Web服务扩展效果也是相同的.
4.压缩率设置对js文件不起作用, 压缩后大小总是相同的.
5.图片文件即使启用了gzip压缩大小也没有变化.

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

启用IIS6的GZIP功能,提高网站打开速度,减少带宽占用
使用vbs+cmd,全自动实现,如果一个东西不常用,但很有用,还是把他做成一健式的,这样以后即便忘记也无所谓,反正可以一健100%成功。
http://xiazai.jb51.net/201101/tools/IIS6-SET-GZIP.rar

(0)

相关推荐

  • win2008 IIS7中启用JS的gzip压缩的方法

    先打开IIS管理,选择我要设置的站点,然后在右边的功能区找到MIME TYPES看看里面是否有.JS的选项,如果没有可以手功加上 有的话把.js的值设置成:application/x-javascript记住不能少并x-有的网友介绍是application/javascript 偶在WIN2008+IIS7下试过,如果不加x-也是不会压缩的. 当然最好在上传JS前对JS进行一次压缩这样效果会更好啦. 可以到网上找找TBCompressor工具,这个工具压缩不错 只不过需要你的JS写的标准,不然会

  • IIS7下js文件启用Gzip后却不压缩的解决方法

    IIS7已经启用静态文件压缩(Gzip)但是死活不压缩,查找后发现是II7下MIME类型设置问题 将.js的MIME类型设置为application/javascript 再查看页面,已经启用了Gzip. 不过,几个天后又发现有的js文件被压缩,有的却没有 查找原因发现是引用js文件是没有设置type <script></script> <script src="A.js"></script> 加上type="text/java

  • IIS启用Gzip的方法与优缺点分析

    现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的CPU,但是换来的是更高的带宽利用率.对于纯文本来讲,压缩率是相当可观的.如果每个用户节约50%的带宽,那么你租用来的那点带宽就可以服务多一倍的客户了. IIS6已经内建了Gzip压缩的支持,可惜,没有设置更好的管理界面.所以要打开这个选项,还要费些功夫. 首先,如果你需要压缩静态文件(HTML),需

  • IIS启用GZip压缩的详细教程(图文)

    IIS启用GZip压缩,是提高网站速度和减轻服务器负载的一个优化手段和方法,经测试,网站启用GZip压缩后,速度快了3倍!而配置起来也相当的简单,因此被广大网站管理员使用.本文将详细介绍如何在IIS启用GZip压缩,同时解决可能遇到的一些问题. IIS启用GZip压缩的步骤: 1.打开IIS,右键点击"网站",选择"属性" 2.在打开的窗口里,切换到"服务"标签,然后选中"HTTP压缩"下面的两个选项,临时目录可以自己新建一个

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

    一.摘要        本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言.        本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小. 三.HTTP压缩概述        HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法.HTTP压缩采用通用的压缩算法如gzip等压缩HTML.Ja

  • IIS启用页面Gzip压缩实现说明

    HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法. HTTP压缩采用通用的压缩算法如gzip等压缩HTML.JavaScript或CSS文件. 压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度. 当然,同时也会增加一点点服务器的负担.Gzip是比较常见的一种HTTP压缩算法.本文介绍的HTTP压缩方式,采用的是Windows系统设置的方式,优点是效率较高. HTTP压缩工作原理 Web服务器处理HTTP压缩的工作原理如下: Web服务器接收到浏览器的HTTP请

  • IIS开启GZIP压缩效率对比及部署方法小结

    压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度.当然,同时也会增加一点点服务器的负担.GZIP是比较常见的一种HTTP压缩算法. 压缩测试在部署的IIS 6.0上配置了GZIP压缩,详细的测试结果如下.未开启GZIP压缩前,访问网站首页进行抓包分析.开启GZIP后,清空本地IE缓存,再次访问抓包分析.开启前后,页面大小减小了89213bytes,压缩掉原始大小的87%.当对CSS.JS等文件都开启GZIP压缩后,原21100bytes的文件,压缩后如图所示,压缩比为80

  • 三步教你开启IIS的GZIP压缩功能

    HTTP压缩 HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法.HTTP压缩采用通用的压缩算法如GZIP等压缩HTML.JavaScript或CSS文件.压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度.当然,同时也会增加一点点服务器的负担.GZIP是比较常见的一种HTTP压缩算法. 部署方法 1. 打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务".在"HTT

  • IIS开启Gzip失败的原因之一:冲突 附解决方法

    但有一台服务器就没有成功,找过原因,未找到,今天突然想到一个方面,赶紧的动手尝试,果然原因就在于此. Gzip是一种流行的文件压缩算法,现在的应用十分广泛,当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小.使用Gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器.这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度,除了节省流量,改善用户的浏览体验外,还有一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系.例如G

  • 启用IIS6的GZIP功能,提高网站打开速度,减少带宽占用

    IIS6默认情况下没有开启GZIP功能,需要我们手动配置,但他又没提供图形化配置功能,所以呀,像我这样的技术人才,都没考虑过使用他,昨天突然看到这个想到,也许对我有用,但从网上找了找,都是一堆手工操作方法,非常麻烦呀,不过以前研究过IIS的配置文件:C:\WINDOWS\system32\inetsrv\MetaBase.xml,所以呀,我知道只要是IIS的功能就可以通过修改这个文件来完成,所以呢,就对这个文件下手吧,根据网上提供的修改的地方,在网上搜索了一圈,找到一个类似ClickOnce 的

  • Gzip压缩启用图文方法详细说明【IIS6.0、Apache】

    什么是Gzip?(已懂的请跳过) Gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序.最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩.我们在Linux中经常会用到后缀为.gz的文件,它们就是Gzip格式的.现今已经成为Internet上使用非常普遍的一种数据压缩格式,或者说一种文件格式.HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.大流量的WEB站点常常使用Gzip压缩技术来让用户感受更快的速度.这一般是指WW

  • 独立主机/VPS 一键开启IIS的GZIP方法

    Windows服务器设置方法: 下载地址:IIS6-SET-GZIP.rar 下载GZIP批处理文件,解压到任意位置,双击运行IIS6-SET-GZIP.cmd 即可迅速设置好GZIP. 特别提示若您的网站启用了CDN技术,则请勿开启gzip功能,否则会导致用户端访问为空白的情况,设置好后,可以通过http://tool.chinaz.com/Gzips/ 来测试压缩结果,如图: GZIP可以压缩静态htm\html\css\js\asp\aspx\php 等格式文件,根据格式不同文件包含的内容

  • windows服务器上的iis Gzip压缩功能启用

    如果压缩动态文件(PHP,asp,aspx)就不需要了,因为它的页面是每次都动态生成的,压缩完就放弃.然后在IIS管理器中,"网站"上面右键-属性,不是下面的某个站点,而是整个网站.进入"服务"标签,选上启用动态内容压缩,静态内容压缩. 然后选中网站下面那个服务器扩展,新建一个服务器扩展.名字无所谓,下面的添加文件的路径是: c:\windows\system32\inetsrv\gzip.dll,然后启用这个扩展. 这时候静态内容是可以压缩的,但是对于动态内容,a

  • 启用IIS的GZIP压缩功能的图文方法

    所以下面来看看步骤: a.加一个服务器扩展:[Internet 信息服务(IIS)管理器]>>[Web 服务扩展]>>"添加一个新的 Web 服务扩展">>"扩展名"随便填>>"要求的文件"添加"C:\windows\system32\inetsrv\gzip.dll">>勾选"设置扩展状态为允许">>[确定]: b.启用IIS的HTT

随机推荐