Page 200 - HTTP权威指南
P. 200
连接1 连接2 连接3 连接4
连接请求
客户端在波士顿,
OK 服务器在旧金山
30毫秒
光速 30毫秒的往返时间
GET Web页面
Web页面
30毫秒
连接请求
GET图片1 连接请求 连接请求
图片1 30毫秒 OK 30毫秒 OK 30毫秒 OK
30毫秒
GET图片2
图片4
图片3
图片2 30毫秒 GET图片3 30毫秒 GET图片4 30毫秒 GET图片5
图片5
30毫秒
GET图片6
图片9
图片8
图片6 30毫秒 GET图片7 30毫秒 GET图片8 30毫秒 GET图片9
图片7
240 毫秒
光速时延
30毫秒
GET图片10 GET图片11 GET图片12 GET图片13
图片10 30毫秒 图片11 30毫秒 图片12 30毫秒 图片13
30毫秒
GET图片16
GET图片14
GET图片15 GET图片17
图片14 30毫秒 图片15 30毫秒 图片16 30毫秒 图片17
30毫秒
GET图片19
GET图片20 GET图片21
GET图片18
图片18 30毫秒 图片19 30毫秒 图片20 30毫秒 图片21
30毫秒
图 7-3 即便使用的是并行的持久连接,光速也会造成显著的时延
7.5 命中和未命中的
这样看来缓存是有所帮助的。但缓存无法保存世界上每份文档的副本。 3 164
可以用已有的副本为某些到达缓存的请求提供服务。这被称为缓存命中(cache
hit),参见图 7-4a。其他一些到达缓存的请求可能会由于没有副本可用,而被转发
给原始服务器。这被称为缓存未命中(cache miss),参见图 7-4b。
7.5.1 再验证
原始服务器的内容可能会发生变化,缓存要不时对其进行检测,看看它们保存的
副本是否仍是服务器上最新的副本。这些“新鲜度检测”被称为 HTTP 再验证
(revalidation)(参见图 7-4c)。为了有效地进行再验证,HTTP 定义了一些特殊的请
求,不用从服务器上获取整个对象,就可以快速检测出内容是否是最新的。
注 3: 几乎没人能够买得起一个大得足以装下 Web 上所有文档的缓存。即便可以买得起巨大的“整个 Web
的缓存”,有些文档也经常会发生变化,很多缓存中的内容都不是最新的。这样的话,在很多缓存中都
无法对其进行及时的更新。
缓 存 | 173