使用HTTP压缩优化服务器
|
鉴于互联网上的宽带有限,网络管理人员任何旨在加速接入速度的努力都是有价值的。其中的一个方法就是通过HTTP压缩技术实现接入速度的加速,它通过减少在服务器和客户端之间传输的数据量,显著地提高网站的性能。数据压缩本身并不新鲜。但是,这种方法的特色在于对服务器到客户端之间的数据压缩是实时的,很少有用户知道这种方法。 HTTP压缩技术,无需客户端配置,它是一种最为简便的提高网络速度的方法。本文旨在讨论这种技术是如何工作的?其优点是什么以及如何实现在Apache和IIS上的数据压缩? 为何要压缩? 绝大多数的用户对压缩技术的了解来自对下载的一大组文件进行压缩、解压和打开等体验,这种压缩技术也可以用于向客户端传输的数据的压缩方面,因为这是一种主动的处理过程,服务器可以减少网页发送的大小,从而降低用户下载的时间,最大效率地利用宽带。 通过压缩技术,你可以将HTML文件压缩到原来大小的一半。这样,把更多的时间留给了客户端,去下载更多带宽的工作量。这种压缩,是在不影响网站实际工作流程、网页设计和服务内务等情况下实现的,唯一改变的是信息传输的方式。 不过,这种方法也有他的限制。 适合压缩的文件类型 当然,并非所有的文件需要压缩。比如,已经压缩的文件诸如JPEG、GIF、PNG、电影和打包内容等不需要HTTP压缩过滤技术。对它们再次压缩将无法得到显著减小文件体积的效果。 同时,网站还有大量的文本内容诸如HTML、XML、CSS和RSS等,他们都需要进行压缩。压缩的程序取决于文件的类型,绝大多数的HTML文本文件压缩率为50%。而用了很格式的网页(例如用了大量的表格来规划页面)可以进一步压缩,最大可压缩到原有大小的三分之一。 幸运的是,大多数HTTP服务器都提供了选择对哪一类型文件进行压缩的能力,服务器就可以选择文件类型进行压缩,那些不适合压缩的文件会排除在外。
实现HTTP压缩 ![]() 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在浏览器支持压缩的情况下会自动对发送的内容进行合适的编码。 下表列出了常见的浏览器和它们支持的编码类型。
“Identity”这个词有时会出现在浏览器支持的编码列表中,这个词的意思就是支持非压缩内容。所有的浏览器都会默认对它提供支持,不过有些没有特别列出。 如上所示,现代的浏览器都支持压缩技术。当发出URL请求时浏览器会自动提供支持的编码。如果你需要使用HTTP压缩技术,只需要对服务器端进行设置就足够了。 总结 使用HTTP压缩是一种简单易行的提高服务器性能和减少带宽消耗的方法,它也有潜在的不足,那就是增大了CPU的开销。但是相对于它带来的好处而言,这个开销是物有所值的。 而且,如果你发现它并没有带来想象中的服务器性能提升,要禁用它也非常简单。它没有改变过你的站点内容,改变的仅是数据传输的方式而已。 |

