减小页面大小以减少网络响应时间的最简单影响最大的技术就是是使用gzip编码来压缩HTTP响应包。
压缩是如何工作的:
Web客户端可以通过HTTP请求中的Accept-Encoding头来表示对压缩的支持。
Web服务器通过响应中的Content-Encoding头来通知Web客户端。
gzip是目前最流行和最有效的压缩方法。
压缩的内容:
压缩的内容包括:HTML文档,脚本和样式表(最常见)以及包括XML和JSON在内的任何文本响应。图片和PDF不包括在内(因为它们以及被压缩了)。
压缩的成本包括:服务器端花费额外的CPU周期来完成压缩。客户端要对压缩文件进行解压缩。
mod_gzip_minimum_file_size指令控制着希望压缩的文件的最小值,默认值是500B。
配置:
Apache是Internet上最流行的Web服务器。
Apache 1.3的gzip压缩由mod_gzip模块提供。
Apache 2.x的压缩通过mod_deflate模块完成。
代理缓存:
解决代理缓存的方法是在Web服务器的响应中添加Vary头。
代理会缓存每个响应的两个版本:Accept-Encoding为gzip时的压缩内容和没有指定Accept-Encoding时的非压缩内容。
默认情况下,mod_gzip会向所有响应添加Vary:Accept Encoding头,以驱使代理执行正确的操作。
边缘情形:
用于设置浏览器白名单的指令过于复杂,无法使用HTTP头进行编码。最佳做法是将User-Agent作为代理的另外一种评判标准添加到Vary头中。
如何平衡压缩和代理支持的决定是很复杂的,需要在加快响应时间,减少带宽开销和边缘情形浏览器缺陷之间进行权衡。