摘要: 本文系统介绍了http压缩的功能以及如何在IIS6.0上启用http压缩, 从而减少网络传输数据量, 提高用户显示页面的速度。
关键词: http压缩 Gzip算法  IIS6.0
Principle and Implementation of HTTP Compression
(Network Center ,Tianjin Conservatory of Music, Tianjin 300180)
Abstract: This paper describes the http compression system, the function and how to IIS6.0 to enable http compression, thus reducing the amount of network traffic, improve the speed of the user display the page.
Key words: http compression Gzip algorithm IIS6.0

一.HTTP压缩概述
HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩通常采用gzip压缩算法压缩HTML、JavaScript、CSS等文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点服务器的负担。

二、.HTTP压缩工作原理
Web服务器处理HTTP压缩的工作原理如下:
1.Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
在用户浏览器发送请求的HTTP头中,  带有"Accept-Encoding: gzip, deflate"参数则表明支持gzip和deflate两种压缩算法.
2.如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;
静态文件和动态文件后缀启动要所都需要在MetaBase.xml中设置.
静态文件需要设置: HcFileExtensions Metabase Property 
动态文件需要设置: HcScriptFileExtensions Metabase Property
3.如果请求文件是HTML、CSS等静态文件并且文件后缀启用了压缩,则Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;
4.如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;
5.如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;
6.如果请求文件是ASPX、ASP等动态文件并且文件后缀启用了压缩,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。
三、适合HTTP压缩的文件类型
   并不是所有的文件都需要压缩。比如,已经压缩的文件诸如JPEG、GIF、PNG等文件不需要HTTP压缩过滤技术。因为对它们再次压缩将无法得到显著减小文件体积的效果。
而HTML、XML、CSS和RSS等文件都需要进行压缩。压缩的程序取决于文件的类型,绝大多数的HTML文本文件压缩率为50%,用大量的表格来规划的页面还可以进一步压缩,最大可压缩到原有大小的三分之一。
幸运的是,大多数HTTP服务器都提供了选择对哪一类型文件进行压缩的能力,服务器就可以选择文件类型进行压缩,那些不适合压缩的文件会排除在外。
四、在IIS6.0中启用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. 数字越小压缩率越低。(说明: 一般推荐设置为9, 具有最佳性价比.)

<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
            exe"
    >
4  编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存;或者用命令行:net stop iisadmin.启动用net start w3svc.
5  最后,重新启动IIS。可以到http://www.port80software.com/tools/compresscheck.asp验证结果。
五 结束语
   本文详细的对 HTTP压缩的原理及设置做了具体的分析。 使用HTTP压缩是一种简单易行的提高服务器性能和减少带宽消耗的方法,它也有潜在的不足,那就是增大了CPU的开销。但是相对于它带来的好处而言,这个开销是物有所值的。
而且,如果没有带来想象中的服务器性能提升,要禁用它也非常简单。它没有改变过你的站点内容,改变的仅是数据传输的方式而已。

参考文献:
1 (美)威廉•斯坦内克《IIS6.0管理员必备指南》世界图书出版公司 2007
2 杨志国 王小琼 李世娇《网站服务器架设精讲(Windows Server2003+IIS6) 电子工业出版社 2006
3  石志国 崔林《ASP动态网站编程》清华大学出版社2006-1
4  胡道远,闵京华.网络安全.北京:清华大学出版社.2005.01.

文章如转载,请注明转载自:http://www.5iadmin.com/post/711.html