Page 211 - HTTP权威指南
P. 211
况下,保持已缓存数据与服务器数据之间充分一致。HTTP 将这些简单的机制称为
文档过期(document expiration)和服务器再验证(server revalidation)。
请求到达
否
是否已缓存?
是
否 否
是否足够新鲜? 与服务器进行再验证 再验证过了? 从服务器获取
是 是
对已缓存文档的 存入缓存
新鲜度进行更新
提供给客户端
图 7-12 缓存 GET 请求的流程图
7.8.1 文档过期
通过特殊的 HTTP Cache-Control 首部和 Expires 首部,HTTP 让原始服务器向
每个文档附加了一个“过期日期”(参见图 7-13)。就像一夸脱牛奶上的过期日期一
175 样,这些首部说明了在多长时间内可以将这些内容视为新鲜的。
HTTP/1.0 200 OK HTTP/1.0 200 OK
Date: Sat, 29 Jun 2002, 14:30:00 GMT Date: Sat, 29 Jun 2002, 14:30:00 GMT
Content-type: text/plain Content-type: text/plain
Content-length: 67 Content-length: 67
Expires: Fri, 05 Jul 2002, 05:00:00 GMT Cache-Control: max-age=484200
Independence Day sale at Joe's Hardware Independence Day sale at Joe's Hardware
Come shop with us today! Come shop with us today!
(a)Expires首部 (b)Cache-Control:max-age首部
图 7-13 Expires 首部和 Cache-Control 首部
在缓存文档过期之前,缓存可以以任意频率使用这些副本,而无需与服务器联
系——当然,除非客户端请求中包含有阻止提供已缓存或未验证资源的首部。但一
旦已缓存文档过期,缓存就必须与服务器进行核对,询问文档是否被修改过,如果
被修改过,就要获取一份新鲜(带有新的过期日期)的副本。
184 | 第 7 章