灌溉梦想,记录脚步
« »
2009年4月1日技术合集

双线机房配置IIS 6.0的HTTP压缩节省带宽

现在双线机房托管服务器,普遍带宽小,价格贵,采用http压缩可以有效节省带宽。
HTTP 压缩的好处:

静态网页采用HTTP 压缩,大约可以减少20%的传输量。
用户端使用IE 5.0浏览器连线到已经启用HTTP压缩IIS 5.0之Web伺服器,才有HTTP压缩功能。如今,绝大多数的现代浏览器支持压缩技术,但是,具体的压缩方式取决于浏览器。不过你无需对此担心,因为只有浏览器指示支持一种压缩方式时,Web服务器才会发送压缩内容。尽管如此,了解一下这种处理机制和不同浏览器支持的压缩类型也是一件有意义的事。

浏览器在要求一个网址时,会把支持的压缩格式通过Accept-Encoding的HTTP头提交给服务器,IIS或其它Web服务器则从HTTP_ACCEPT_ENCODING环境变量读取这个信息,这个过程无需你人为干预,IIS在浏览器支持压缩的情况下会自动对发送的内容进行合适的编码。

下表列出了常见的浏览器和它们支持的编码类型:

浏览器 支持的编码
Firefox 1.0, Mozilla 1.x, Camino gzip, deflate
OmniWeb 5.x bzip2, gzip, deflate
Safari gzip, deflate
Internet Explorer gzip, deflate

使用 HTTP 压缩:

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

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

HTTP 压缩的工作原理:

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

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

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

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

启用 HTTP 压缩:

如果服务器生成大量的动态内容,则需要考虑压缩造成的额外处理代价是否值得付出。如果 % 处理器时间计数器已经达到或超过 80%,则不建议启用 HTTP 压缩。

测试 HTTP 压缩:

要创建一个基线,请使用系统监视器记录几天内“处理器”对象的 % 处理器时间计数器的值。此计数器有一个总实例以及系统中每个处理器的单独实例。(如果服务器有多个处理器,应该同时观察单个处理器和总的处理器情况,以发现工作量分配不平衡之处)此外,还应该记录“网络接口”对象的发送的字节数/秒计数器。 启用压缩并继续在一段时间内记录这些计数器的值,最好是几天,这样就能得到好的对比依据。 将未压缩时的值和压缩过的值相比较。

现在引入正题,

如何配置 Microsoft Internet Information Server 6.0 实现 HTTP 压缩:

有很多第三方工具可以实现 HTTP 压缩,但都是需要购买的,价格在 100 到 300 美圆不等,如:http://www.port80soft.com/的 HTTPZip,如果不希望额外花钱实现这一功能的话,只好自己辛苦一下,接着看吧:

1.首先备份 IIS 的配置文件,

复制 C:\Windows\system32\inetsrv\metabase.xml 到另外的备份文件夹中.

C:\Windows\system32\inetsrv\metabase.xml 是 IIS 的核心配置文件,该文件的完整性一但被破坏,IIS 将无法正常运行,严重到需要重新安装系统.

2. 在开始菜单中启动 Internet 信息服务(IIS)管理器,右键点击“网站”属性,打开“服务”选项卡,勾选“HTTP 压缩”的两个选项。“临时目录”和“临时目录最大容量”可根据需要自行设置。设置完成后点击确定。

3.右键点击“网站”下方的 “Web服务扩展”,添加一个新的Web服务扩展,扩展名填写为“HTTP Compression”或其他,都可以。“要求的文件”添加:c:\windows\system32\inetsrv\gzip.dll ,并勾选“设置扩展状态为允许”,完成后点击确定。

4.下面的步骤有些复杂,如果没有确定的把握能理解,最好不要尝试,右键点击“Internet 信息服务的”“本地计算机”属性,勾选“允许直接编辑配置数据库”并确定。

5. 在开始菜单中运行 notepad C:\Windows\system32\inetsrv\metabase.xml ,打开metabase.xml 文件,请在任何改动前再次确认该文件已经备份。

6. 搜索并找到 metabase.xml 文件中的 


注意“Compression/deflate”和“Compression/gzip”两个片段都需要修改。动态压缩等级,HcDynamicCompressionLevel 建议设置为“9”

7. 保存并关闭 metabase.xml 文件。

8. 重新启动 IIS 服务,运行“IISReset”或重新启动 WWW 服务。

9. 其他:

如果你的服务器上某一个Web站点不希望启用 IIS 压缩,请运行以下脚本:

cscript. C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/site#/root/DoStaticCompression False
cscript. C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/site#/root/DoDynamicCompression False

如果想增加启用 HTTP 压缩的文件类型,请运行以下脚本:

"" 中为文件扩展名,别忘了把原有的扩展名加上。

静态文件压缩:

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcFileExtensions "htm" "html" "txt" "doc" "ppt" "xls"

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcFileExtensions "htm" "html" "txt" "doc" "ppt" "xls"

动态文件压缩:

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" "aspx" "asmx" "dll" "exe" "php"

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions "asp" "aspx" "asmx" "dll" "exe" "php"

将site#替换为该 Web 站点的 ID。Web 站点的 ID 是什么到“日志记录属性”中看一下日志记录的“日志文件名”前面的路径就知道了。

运行以上脚本前务必备份,运行后再次执行“IISReset”使生效.

现在看一下 HTTP 压缩后的效果吧:

测试 HTTP 压缩效果的工具:

http://www.pipeboost.com/

http://www.seoconsultants.com/tools/compression.asp

日志信息 »

该日志于2009-04-01 19:10由 admin 发表在技术合集分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

发表回复