上善若水,水善利万物而不争。

服务器再验证

仅仅是已缓存文档过期了并不意味着它和原始服务器上目前处理活跃状态的文档有实际区别,这只是意味着到了要进行审核的时间了。这种情况被称为“服务器再验证”,说明缓存需要询问服务器文档是否发生了变化。

1)如果内容发生变化,缓存会获取一份新的文档副本,并将其存储在旧文档的位置上,然后将文档发送给客户端。

2)如果内容没有变化,缓存只需要获取新的首部,包括一个新的过期日期,并对缓存中的首部进行更新就行了。

用条件方法进行再验证

对于缓存再验证来说最有用的2个首部是(If-Modified-Since、If-Unmodified-Since)[对应于Last-Modified]和(If-None-Match、If-Match)[对应于ETag]

If-Modified-Since:如果从指定日期之后文档被修改过了,就执行请求的方法。可以与Last-Modified服务器响应首部配合使用,只有在内容被修改后与已缓存版本有所不同的时候才去获取内容。

If-None-Match:服务器可以为文档提供特殊的标签(Etag,版本标识符),,而不是将其与最近修改日期相匹配,这些标签就像序列号一样。如果已缓存标签与服务器文档中标签有所不同,If-None-Match首部就会执行所请求的方法。

服务端与客户端控制缓存的能力

可以通过HTTP定义的几种方式来指定文档的过期策略

Cache-Control:no-store

Cache-Control:no-cache

理想的路总是为有信心的人预备着

上善若水,水善利万物而不争。

相关文章:

你感兴趣的文章:

标签云: