高性能网站建设指南(四)压缩组件
in Blog
通过减小HTTP响应的大小来减少响应时间。如果HTTP请求产生的响应包很小,传输时间就会减少,因为只需要将很小的包从服务器传递到客户端。这一效果对速度较慢的带宽尤其明显。使用gzip编码来压缩HTTP响应包,并由此减少网络响应时间。这是减小页面大小的最简单的技术,但影响是最大的。
压缩是如何工作的(How Compression Works)
用于减小文件提价的文件压缩已经在E-mail应用和FTP站点中使用了10年,同样的技术也可以用于向浏览器发布压缩的Web页面。从HTTP1.1开始,Web客户端可以通过HTTP请求中的Accept-Encoding头来表示对压缩的支持。
gzip是目前最流行和最有效的压缩方法。这是GNU项目开发的一种免费的格式,并被标准化为RFC1952。
压缩什么(What to Compression)
服务器基于文件类型选择压缩什么,但这通常受限于对其进行配置。很多网站会压缩其HTML文档。压缩脚本和样式表也是非常值得的。
节省(The Savings)
压缩通常能将响应的数据量减少将近70%。
配置(Configuration)
配置gzip时使用的模块取决于Apache的版本——Apache1.3使用mod_gzip,而Apache 2.X使用mod_deflate。
代理缓存(Proxy Caching)
在Web服务器的响应中添加Vary头。Web服务器可以告诉代理根据一个或多个请求头来改变缓存的响应。由于压缩的决定是基于Accept-Encoding请求头的,因此需要在服务器的Vary响应头中包含Accept-Encoding。这将是的代理缓存响应的多个版本,为Accept-Encoding请求头的每个值缓存一份。
边缘情形(Edge Cases)
服务器和客户端的压缩对等性看似简单,但必须正确才行。无论是客户端还是服务器发生错误页面都会被破坏。错误并不会经常发生,但是得考虑边缘情形。
一种安全的方式是只为已证实过支持压缩的浏览器提供压缩内容,这被称作浏览器白名单方式。
压缩的实际效果(Gzip in Action)
经过压缩HTML文档、样式表和脚本,页面大小减小了70%,压缩组件后,页面的响应时间减少了50%。
对Web服务器配置进行简单的修改,压缩尽可能多的组件,就能显著改善页面的反应速度。