WPO基础:在IIS上设置Gzip压缩

WPO基础:在IIS下设置Gzip压缩


本文是关于在IIS如何设置Gzip压缩,包括iis6和iis7,以及经常遇到的一些特殊情况。部分内容来自网络,在文中已经注明了来源。

 

几乎所有的网页,都可以通过设定Gzip组件压缩,来加快网页的访问速度。

什么是Gzip呢?就是当用户发送了一个HTTP请求(HTTP Request)之后,服务器返回一个HTTP响应(HTTP Response),这个响应如果是经过压缩过的,那么传输的时间就更少,也就提升了网页的性能。

WPO基础:在IIS上设置Gzip压缩

图6-37:HTTP请求头信息中的Aceept-Encoding告诉服务器浏览器支持哪几种压缩格式

 

WPO基础:在IIS上设置Gzip压缩

图6-38: HTTP响应头信息中的Content-Encoding显示具体采用某种压缩格式

 

图6-37是一个HTTP请求,其中的 “Accept-Encoding gzip, deflate”声明了访客服务器支持两种压缩格式:gzip和deflate。请求发送到服务器之后,服务器就会把HTTP响应用gzip或者deflate的方式压缩之后再返回给访客的浏览器。并非所有的浏览器都支持deflate压缩,但几乎所有的浏览器都支持gzip压缩,所以组件压缩方式多采用gzip格式。

图6-38是一个HTTP响应,其中的 “Content-Encoding gzip”声明了服务器返回的信息的压缩格式,在上图中采用了gzip的压缩方式。

 在IIS7下设置Gzip压缩

既然大多数压缩采用gzip方式,那么如何在服务器上设定Gzip压缩呢?请参照图6-39是II7下设置Gzip压缩的方法。

WPO基础:在IIS上设置Gzip压缩

图6-39: IIS7.0设置Gzip压缩

 

在IIS7.0中,Gzip压缩设置很简单,只是勾选两个多选框即可。但是否所有文件都会被压缩呢?其实不是所有文件都会被压缩。大家使用过WinRAR或者Winzip就知道,图片压缩的比率是不高的。IIS7.0会自己判断哪些文件应该压缩,哪些文件不压缩。定义的文件放在 %系统目录%/system32/inetsrv/config/applicationhost.config文件中。定义文件如下:

       <httpCompression directory=”%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files”>

<scheme name=”gzip” dll=”%Windir%\system32\inetsrv\gzip.dll” />

<dynamicTypes>

<add mimeType=”text/*” enabled=”true” />

<add mimeType=”message/*” enabled=”true” />

<add mimeType=”application/x-javascript” enabled=”true” />

<add mimeType=”*/*” enabled=”false” />

</dynamicTypes>

<staticTypes>

<add mimeType=”text/*” enabled=”true” />

<add mimeType=”message/*” enabled=”true” />

<add mimeType=”application/x-javascript” enabled=”true” />

<add mimeType=”application/atom+xml” enabled=”true” />

<add mimeType=”application/xaml+xml” enabled=”true” />

<add mimeType=”*/*” enabled=”false” />

</staticTypes>

</httpCompression>

从上面的代码可以看到,mime类型是文本、javasctipt会进行压缩。

 

 在IIS6下设置Gzip压缩

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

 WPO基础:在IIS上设置Gzip压缩

图6-40: IIS6.0设置Gzip压缩

 

然后在 Internet信息服务(IIS)管理器,右击”Web服务扩展”->”增加一个新的Web服务扩展…”,在”新建Web服务扩展”框中输入扩展名”HTTP Compression”,添加“要求的文件”为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中”设置扩展状态为允许”;

WPO基础:在IIS上设置Gzip压缩

 

除了上述设置外,有的服务器还需要同时修改 metabase.xml 文件,该文件在 c:\windows\system32\inetsrv\ 目录下。

metabase.xml被IIS占用,是只读的无法编辑。所以我们先要停止运行IIS服务,或者在IIS中设置“允许直接编辑配置数据库”,具体方法如下:

 

第一种:修改本地计算机的属性。

   1、打开iis管理器,右击本地计算机–选择属性,如下图
WPO基础:在IIS上设置Gzip压缩

   2、勾选”允许直接编辑配置数据库”,这样就可以在不停止IIS的情况下编辑metabase.xml文件。
WPO基础:在IIS上设置Gzip压缩

   3、现在再试一下编辑metabase.xml文件,然后保存,就没有问题了。

   第二种:停止IIS服务。

   点击左下角的开始,进入控制面板,找到“管理工具”,点击进入,选择“服务”。停止“World   Wide  Web   Publishing   Service”服务,并设为禁止或手动,停止“IIS   Admin   Service”服务,如果有FTP服务“FTP   Publishing   Service”同样设置。然后编辑好metabase.xml文件,修改完成之后,启用这些服务。

 

通过上面的限制,解除了metabase.xml 无法编辑的问题,然后我们就开始编辑metabase.xml

搜索关键词“iiscompression”,找到类似下面的段落,然后编辑

 

WPO基础:在IIS上设置Gzip压缩

上面的HCDanymicCompressionLevel=”9″,这个数值是压缩率,从0~10。根据网上建议,设置为9,性能压缩比最合适。

红色框中的部分是有哪些文件会被压缩。一般来说,图片文件如gif jpg不建议压缩,因为会耗费很多系统性能,但压缩率很小。第一个红框内的是静态文件,建议设置 html/htm/txt/inc/css/js/xml等。第二个红框是动态文件,可以设置asp/asa/aspx/php/dll/exe等常见后缀。

请注意上述的代码区有两处,也就是要修改两次。修改完iis之后,重启一下iis。

 

以上是在iis6和iis7下设置压缩的方法。启用压缩后,服务器响应的数据大约可以减少30~70%,这是非常可观的。

网络参考网站:来源一  来源二

 

作者: 谭砚耘@用户体验与可用性设计-科研笔记

版权属于: 谭砚耘 (TOTHETOP至尚国际  )

版权所有。转载时必须以链接形式注明作者和原始出处

如果你希望与作者交流,请发送邮件到 tanyanyun/at/163.com 别忘了修改小老鼠

 

1 楼 happenhappenhappen 2012-02-11  
goodWPO基础:在IIS上设置Gzip压缩
2 楼 jlins_you 2012-02-11  
所有的图片都是X号
3 楼 谭砚耘 2012-02-12  
jlins_you 写道
所有的图片都是X号

哦?图片是放在海外服务器上的。我在深圳访问正常。
您在哪个位置?