第一章通过限制不必要的 HTTP 请求解决了响应时间的问题;第二章通过将 HTTP 响应拉近用户来减少响应时间;本章通过减小 HTTP 响应的大小来减少响应时间,如果 HTTP 请求产生的响应包很小,传输时间就会减少,因为只需要将很小的包从服务器传递到客户端。
从 HTTP 1.1 开始, Web 客户端可以通过 HTTP 请求中的 Accept-Encoding 头来标识对压缩的支持。
如果 Web 服务器看到请求中有这个头,就会使用客户端列出来的方法中的一种来压缩响应。 Web 服务器通过响应中的 Content-Encoding 头来通知 Web 客户端。
gzip 压缩:
gzip 是目前最流行和最有效的压缩方法。使用 gzip 压缩组件,通常能将响应的数据量减少将近70%。
服务器基于文件类型选择压缩什么,后端可对其进行配置。
HTML、脚本、样式表等都可以进行压缩,但是图片和 PDF 不应该压缩,因为它们本来就已经被压碎了,试图对它们进行压缩只会浪费 CPU 资源,还有可能会增加文件大小。
压缩的成本有:服务器端会话费额外的 CPU 周期来完成压缩,客户端要对压缩文件进行解压缩。要检测收益是否大于开销,需要考虑响应的大小、连接的带宽和客户端与服务器之间的 Internet 距离。根据经验通常会大于 1KB 或 2KB 的文件进行压缩。