WPO基础:在IIS下设置Gzip压缩
本文是关于在IIS如何设置Gzip压缩,包括iis6和iis7,以及经常遇到的一些特殊情况。部分内容来自网络,在文中已经注明了来源。
?
几乎所有的网页,都可以通过设定Gzip组件压缩,来加快网页的访问速度。
什么是Gzip呢?就是当用户发送了一个HTTP请求(HTTP Request)之后,服务器返回一个HTTP响应(HTTP Response),这个响应如果是经过压缩过的,那么传输的时间就更少,也就提升了网页的性能。
图6-37:HTTP请求头信息中的Aceept-Encoding告诉服务器浏览器支持哪几种压缩格式
?
图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的压缩方式。
既然大多数压缩采用gzip方式,那么如何在服务器上设定Gzip压缩呢?请参照图6-39是II7下设置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会进行压缩。
?
打开Internet信息服务(IIS)管理器,右击”网站”->”属性”,选择”服务”。在”HTTP压缩”框中选中”压缩应用程序文件”和”压缩静态文件”,按需要设置”临时目录”和”临时目录的最大限制”;
?
图6-40: IIS6.0设置Gzip压缩
?
然后在 Internet信息服务(IIS)管理器,右击”Web服务扩展”->”增加一个新的Web服务扩展…”,在”新建Web服务扩展”框中输入扩展名”HTTP Compression”,添加“要求的文件”为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中”设置扩展状态为允许”;
?
除了上述设置外,有的服务器还需要同时修改 metabase.xml 文件,该文件在 c:\windows\system32\inetsrv\ 目录下。
metabase.xml被IIS占用,是只读的无法编辑。所以我们先要停止运行IIS服务,或者在IIS中设置“允许直接编辑配置数据库”,具体方法如下:
?
第一种:修改本地计算机的属性。
???1、打开iis管理器,右击本地计算机–选择属性,如下图
???2、勾选”允许直接编辑配置数据库”,这样就可以在不停止IIS的情况下编辑metabase.xml文件。
???3、现在再试一下编辑metabase.xml文件,然后保存,就没有问题了。
???第二种:停止IIS服务。
???点击左下角的开始,进入控制面板,找到“管理工具”,点击进入,选择“服务”。停止“World???Wide??Web???Publishing???Service”服务,并设为禁止或手动,停止“IIS???Admin???Service”服务,如果有FTP服务“FTP???Publishing???Service”同样设置。然后编辑好metabase.xml文件,修改完成之后,启用这些服务。
?
通过上面的限制,解除了metabase.xml 无法编辑的问题,然后我们就开始编辑metabase.xml
搜索关键词“iiscompression”,找到类似下面的段落,然后编辑
?
上面的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?别忘了修改小老鼠
?
2 楼 jlins_you 2012-02-11 所有的图片都是X号 3 楼 谭砚耘 2012-02-12 jlins_you 写道所有的图片都是X号