如何使用Http压缩优化服务器
鉴于互联网上的宽带有限,网络管理人员任何旨在加速接入速度的努力都是有价值的。
其中的一个方法就是通过HTTP压缩技术实现接入速度的加速,它通过减少在服务器和客户
端之间传输的数据量,显著地提高网站的性能。数据压缩本身并不新鲜。但是,这种方法的
特色在于对服务器到客户端之间的数据压缩是实时的,很少有用户知道这种方法。
HTTP压缩技术,无需客户端配置,它是一种最为简便的提高网络速度的方法。本文旨在
讨论这种技术是如何工作的?其优点是什么以及如何实现在Apache和IIS上的数据压缩?
为何要压缩?
绝大多数的用户对压缩技术的了解来自对下载的一大组文件进行压缩、解压和打开等体
验,这种压缩技术也可以用于向客户端传输的数据的压缩方面,因为这是一种主动的处理过
程,服务器可以减少网页发送的大小,从而降低用户下载的时间,最大效率地利用宽带。
通过压缩技术,你可以将HTML文件压缩到原来大小的一半。这样,把更多的时间留给了
客户端,去下载更多带宽的工作量。这种压缩,是在不影响网站实际工作流程、网页设计和服
务内务等情况下实现的,唯一改变的是信息传输的方式。不过,这种方法也有他的限制。
适合压缩的文件类型:
当然,并非所有的文件需要压缩。比如,已经压缩的文件诸如JPEG、GIF、PNG、电影和打包
内容等不需要HTTP压缩过滤技术。对它们再次压缩将无法得到显著减小文件体积的效果。
同时,网站还有大量的文本内容诸如HTML、XML、CSS和RSS等,他们都需要进行压缩。
压缩的程序取决于文件的类型,绝大多数的HTML文本文件压缩率为50%。而用了很格式的网页
(例如用了大量的表格来规划页面)可以进一步压缩,最大可压缩到原有大小的三分之一。
幸运的是,大多数HTTP服务器都提供了选择对哪一类型文件进行压缩的能力,服务器就可以
选择文件类型进行压缩,那些不适合压缩的文件会排除在外。
实现HTTP压缩:
HTTP压缩,是服务器的功能,而浏览器也会自动地支持而无需对客户端进行另外的配置。
要想启用服务器压缩,只需要简单的对服务器进行一些设置。
要启用HTTP压缩的设置, Apache、IIS6和IIS的更老版本的设置方法都不同。
Apache
Apache 2.0包含了mod_deflate模块,这个模块对服务器内容进行动态的Gzip压缩。
这种压缩可以是对所有内容无差别的——对IE浏览器,所有的内容都是经过压缩的,或
者是选择性的,仅压缩指定的MIME类型,MIME类型由HTTP应答头确定,这个HTTP头
可以是由Apache自动生成或是由动态程序(例如CGI)的输出。
要实现内容的无差别压缩,可以在Apache配置文件中对整个站点或需要启用压缩的
目录加入SetOutputFilter指示如下:
SetOutputFilter Deflate
要启用对特定MIME类型内容的压缩,可以在配置文件中使用AddOutputFilterByType指示,例如下面这样:
AddOutputFilterByType DEFLATE text/html
注意:(1.)所有被指定MIME类型输出都将被压缩,无论它是来自于一个静态的磁盘文件
还是一个动态程序(如CGI或mod_perl)输出。
(2.)有些老的浏览器无法正确的处理压缩过的内容,这时可以用BrowserMatch指示
来过滤掉特定的浏览器类型,你可以查看mod_deflate 帮助手册获取更详细的资料。
IIS 6的认识:
IIS 6包括了一个简便易用的内置压缩组件。由于是内置式的,它不是通过IISAPI接口,
它的压缩速度极快,是IIS 5和更早版本IIS的第三方HTTP压缩组件的最佳替代品。压缩系
统可以设置对动态和静态内容进行压缩,它也可以在目录中缓冲压缩信息,这样当再次访
问以前访问过的内容时,无需再次进行压缩从而改善了动态和静态内容的访问性能。
为了实现在IIS 6中的HTTP压缩技术,用户打开网站的属性页面,编辑全局属性,切
换到“服务”标签,在HTTP压缩选项中配置选择项。
IIS5和IIS的更老版本:
IIS5和IIS的更老版本没有内置压缩功能,但是,它们支持ISAPI过滤器。
我们建议用户使用Port80端口的。
ZipEnable。虽然也存在其它类似功能的产品,但它是少数微软特别推荐
的产品之一,而且它与IIS 6兼容,通过配置IIS 6的设置,它可以将IIS6的HTTP
压缩功能进一步在目录级别上进行进行控制。
服务器的性能表现:
显然,对传输数据进行压缩需要一定的CPU时间,这种压缩过程可能会对网站
造成不良的影响,因为选定的每个目标在发送前都必须进行压缩。这里IIS6领先了
Apache一小步,它建立了一个缓冲区域,放压缩文件放在里面,这样对于那些被频
繁访问的内容可以大大减少CPU压缩处理时间。但这不能完全避免实时在线压缩的需
要,大量的动态的内容还是必须被在线压缩,而这些动态内容所需的缓存空间可能极
其巨大。
如果可以节省50%的带宽而只牺牲网站不到10%的CPU时间。这样做是完全值得的,
特别是对于那些按网络流量计费的企业来说更为划算。
浏览器的支持和动态内容:
如今,绝大多数的现代浏览器支持压缩技术,但是,具体的压缩方式取决于浏览器。
不过你无需对此担心,因为只有浏览器指示支持一种压缩方式时,Web服务器才会发送
压缩内容。尽管如果,了解一下这种处理机制和不同浏览器支持的压缩类型仅是一件有
意义的事。
浏览器在要求一个网址时,会把支持的压缩格式通过Accept-Encoding的HTTP头提交
给服务器,Apache或其它Web服务器则从HTTP_ACCEPT_ENCODING环境变量读取这个
信息,这个过程无需你人为干预,Apache在浏览器支持压缩的情况下会自动对发送的内容
进行合适的编码。
下表列出了常见的浏览器和它们支持的编码类型 :
总结:
使用HTTP压缩是一种简单易行的提高服务器性能和减少带宽消耗的方法,它也有
潜在的不足,那就是增大了CPU的开销。但是相对于它带来的好处而言,这个开销是物
有所值的。
而且,如果你发现它并没有带来想象中的服务器性能提升,要禁用它也非常简单。它
没有改变过你的站点内容,改变的仅是数据传输的方式而已。