启用iis6 http压缩及其详解

来源:岁月联盟 编辑:zhu 时间:2009-09-22
启用iis6 http压缩及其详解内容简介:环境 windows server 2003 sp2 ms framework 2.0 sp2 iis6 背景资料 使用 HTTP 压缩 如果您的站点使用了很大的带宽,或者您希望更加有效地使用带宽,请考虑启用 HTTP 压缩。HTTP 压缩在启用压缩的浏览器和 IIS 之间提供了

环境

windows server 2003 sp2

ms framework 2.0 sp2

iis6

背景资料

使用 HTTP 压缩

如果您的站点使用了很大的带宽,或者您希望更加有效地使用带宽,请考虑启用 HTTP 压缩。HTTP 压缩在启用压缩的浏览器和 IIS 之间提供了更短的传输时间。既可以只压缩静态文件,又可以同时压缩静态文件和应用程序响应。如果网络带宽受到限制,使用 HTTP 压缩会很有用(至少对于静态文件来说),除非处理器利用率已经很高。

动态处理会影响 CPU 资源。对动态响应启用压缩后,每次请求动态响应时都会进行压缩。这意味着并不缓存动态响应,每次请求动态响应时,服务器可能需要更多的 CPU 周期来压缩和发送响应。已压缩的静态响应可以被缓存,因此不会像动态响应那样影响 CPU 资源。

HTTP 压缩的工作原理

IIS 在接收到请求时,将检查浏览器是否允许压缩。然后 IIS 会检查文件扩展名,以确定请求的文件是否为静态文件或包含动态内容。如果文件包含静态内容,IIS 将查看以前是否请求过该文件并且已将该文件以压缩格式存储在临时压缩目录中。如果文件没有以压缩格式存储,IIS 会将未压缩的文件发送到浏览器,并在临时压缩目录中添加此文件的压缩副本。如果文件以压缩格式存储,IIS 会将压缩过的文件发送给浏览器。在浏览器首次请求之前,所有文件都不压缩。

如果文件包含动态内容,IIS 将在生成此响应时进行压缩并将压缩后的响应发送给浏览器。不存储此文件的副本。

压缩静态文件的性能代价较小,而且通常只压缩一次,因为该文件随后被存储在临时压缩目录中。压缩动态生成的文件的代价要高一些,因为它们并不存储,并且每次请求时都必须重新生成。在浏览器上展开文件的代价非常小。压缩文件的下载速度更快,所以对于提高使用有限带宽的网络连接(如调制解调器连接)的所有浏览器的性能特别有好处。

默认情况下,压缩文件的截止日期是 1997 年 1 月 1 日,以防止代理服务器将缓存的压缩文件副本发送到未启用压缩的浏览器。这也意味着浏览器在下一次用户请求时并不显示文件的缓存副本,而是返回服务器请求新副本。

http压缩算法

http压缩算法分为两种,deflate和gzip,iis和主流浏览器这两种压缩算法都支持,gzip从压缩效果及资源使用方面更好。

启用http压缩

1. 进入iis管理控制器,查看"网站"节点属性,在"服务"标签页中选中"启用应用程序文件"、"压缩静态文件"。

对iis6启用http压缩

2. 停止iis服务

运行iisreset -stop

3. 编辑MetaBase.xml

停止iis服务后才能编辑该文件,否则无法保存。打开C:/Windows/system32/inetsrv/MetaBase.xml:

Xml代码  

<!-- deflate 算法配置 --> 
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate" 
 HcCompressionDll="%windir%/system32/inetsrv/gzip.dll" 
 HcCreateFlags="0" 
 HcDoDynamicCompression="TRUE" 
 HcDoOnDemandCompression="TRUE" 
 HcDoStaticCompression="FALSE" 
 <!-- 压缩级别,0~10,建议9 --> 
 HcDynamicCompressionLevel="9" 
 <!-- 静态文件扩展名(与动态生成文件区别参见上述"HTTP 压缩的工作原理") --> 
 HcFileExtensions="htm 
  html 
  txt 
  js 
  css 
  png 
  gif 
  jpg" 
 HcOnDemandCompLevel="10" 
 HcPriority="1" 
 <!-- 动态生成文件扩展名(与静态文件区别参见上述"HTTP 压缩的工作原理") --> 
 HcScriptFileExtensions="asp 
  dll 
  exe 
  aspx 
  ashx" 
 > 
</IIsCompressionScheme> 
<!-- gzip 算法配置 --> 
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip" 
 HcCompressionDll="%windir%/system32/inetsrv/gzip.dll" 
 HcCreateFlags="1" 
 HcDoDynamicCompression="TRUE" 
 HcDoOnDemandCompression="TRUE" 
 HcDoStaticCompression="TRUE" 
 <!-- 压缩级别,0~10,建议9 --> 
 HcDynamicCompressionLevel="9" 
 <!-- 静态文件扩展名(与动态生成文件区别参见上述"HTTP 压缩的工作原理") --> 
 HcFileExtensions="htm 
  html 
  txt 
  js 
  css 
  png 
  gif 
  jpg" 
 HcOnDemandCompLevel="10" 
 HcPriority="1" 
 <!-- 动态生成文件扩展名(与静态文件区别参见上述"HTTP 压缩的工作原理") --> 
 HcScriptFileExtensions="asp 
  dll 
  exe 
  aspx 
  ashx" 
 > 
</IIsCompressionScheme> 

4. 启动iis服务

运行iisreset -start

效果

启用压缩前后YSlow的评分对比:

修改前

对iis6启用http压缩

修改后

对iis6启用http压缩

图片内容