Page 218 - Web性能权威指南
P. 218
• 消除不必要的请求开销
减少请求的 HTTP 首部数据(比如 HTTP cookie),节省的时间相当于几次往返
的延迟时间。
• 并行处理请求和响应
请求和响应的排队都会导致延迟,无论是客户端还是服务器端。这一点经常被忽
视,但却会无谓地导致很长延迟。
• 针对协议版本采取优化措施
HTTP 1.x 支持有限的并行机制,要求打包资源、跨域分散资源,等等。相对而
言,HTTP 2.0 只要建立一个连接就能实现最优性能,同时无需针对 HTTP 1.x 的
那些优化方法。
上述所有各项均有必要详细解释。下面我们分别讨论。
13.1.1 在客户端缓存资源
要说最快的网络请求,那就是不用发送请求就能获取资源。将之前下载过的数据缓
存并维护好,就可以做到这一点。对于通过 HTTP 传输的资源,要保证首部包含适
当的缓存字段:
• Cache-Control 首部用于指定缓存时间;
• Last-Modified 和 ETag 首部提供验证机制。
只要可能,就给每种资源都指定一个明确的缓存时间。这样客户端就可以直接使用
本地副本,而不必每次都请求相同的内容。类似地,指定验证机制可以让客户端检
查过期的资源是否有更新。没有更新,就没必要重新发送。
最后,还要注意应同时指定缓存时间和验证方法!只指定其中之一是最常见的错误,
于是要么导致每次都在没有更新的情况下重发相同内容(这是没有指定验证),要么
导致每次使用资源时都多余地执行验证检查(这是没有指定缓存时间)。
理想与现实:智能手机上的 Web 资源缓存
对 HTTP 最早的版本而言,缓存 HTTP 资源一度是最最重要的性能优化措施。然
而,尽管看似所有人都意识到了这一措施的好处,但实际调查却不断发现,缓存
资源却经常是一个被忽略的措施! AT&T 实验室与密歇根大学最近的一次合作研
究指出:
204 | 第 13 章