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 章
   206   207   208   209   210   211   212   213   214   215   216