美文网首页
7.8 keep copies fresh 保持缓存内容新鲜

7.8 keep copies fresh 保持缓存内容新鲜

作者: 恒星的背影 | 来源:发表于2019-06-27 12:28 被阅读0次

客户端缓存的副本可能会与服务器上的文档不一致,因为这些文档可能会随时间发生变化。所以缓存的数据与服务器数据保持一致是重要的,HTTP有一些机制来做这件事。

1 文档过期
使用 Cache-ControlExpires 可以给文档添加一个过期时间,缓存过期之前,客户端可以直接使用缓存,而无需和服务端联系。缓存一旦过期,就需要询问服务端文档是否修改过,如果修改过,则需要获取一份新的副本。

2 过期日期和使用期
Cache-Control 使用相对时间;Expires 使用绝对时间,这依赖于计算机时钟的正确设置。

3 服务器再验证
验证时如果文档内容没有变化,那么只需要用新的 response header 更新过期时间即可。

4 用条件方法进行再验证
HTTP条件方法可以高效地实现再验证,这种方式将新鲜度检测和获取对象结合成了单个请求。
If-Modified-Since: <date> : 如果在指定日期之后文档修改过,就执行请求的方法
If-None-Match: <tags> : 如果已缓存的 ETag 与服务器文档中的 ETag 不同,就执行请求的方法

5 If-Modified-Since: Date 再验证
如果文档没有变化,返回 304 响应报文。
If-Modified-Since 可以和 Last-Modified 配合,验证时使用 Last-Modified 给出的日期。

6 If-None-Match: Entity Tag 再验证
ETag 是版本标识符。有些场景只使用最后修改日期进行再验证是不够的,比如修改的内容并不重要,不需要缓存更新。
当发布者对文档修改时,可以修改文档的ETag来说明这个新的版本。

7 强弱验证器
w/ 标记弱验证器,ETag: W/"v2.6"

8 何时用 Entity Tags 和 Last-Modified Dates
如果服务器只提供了Last-Modified值,那就用If-Modified-Since验证;
如果服务器提供了ETag值,就用ETag验证;
如果两者都提供了,只有两者都满足时才能返回 304 Not Modified

总结:
服务器给出Cache-ControlExpires 响应头,表示文档过期时间。过期之前浏览器直接使用缓存的内容,而不重新发出请求。
过期之后根据服务器给的Last-ModifiedETag 相应头,客户端使用 If-Modified-Since: <date>If-None-Match: <tags> 发出请求,如果文档未发生变化,返回 304 Not Modified,否则返回新的文档。

参考资料:
《HTTP权威指南》

相关文章

  • 7.8 keep copies fresh 保持缓存内容新鲜

    客户端缓存的副本可能会与服务器上的文档不一致,因为这些文档可能会随时间发生变化。所以缓存的数据与服务器数据保持一致...

  • 2021-02-24每日美文阅读和英语学习(第329天)

    英语学习 How Did People Keep Food Fresh Before Refrigerators?...

  • Vue2的一些原理

    keep-alive keep-alive - 多看源码,方知原理,才能优化 作用:缓存 怎么缓存:用队列缓存到内...

  • keep-alive作用

    keep-alive作用:(把数据缓存下来)是保持组件不销毁,用来处理要保持组件状态的那些场景;( 理解:页面1跳...

  • vue踩坑日记

    keep-alive缓存的组件调用this.$destory()后,无法再次缓存! 解决办法: 动态修改keep-...

  • 保持生命的新鲜感——给20几岁的我们

    最近一直看《傅雷家书》,傅雷先生特别郑重地告诫儿子傅聪,在弹琴之余保持生命的新鲜(fresh)和活力,不能过度消...

  • 专家早教丨走出舒适圈,每一个今天都赢过昨天

    Re-fresh,这一单词非常有意思,re-再一次,fresh新鲜,合在一起refresh = 再一次新鲜,有恢复...

  • 随笔

    缓存 : 包裹动态组件时,会缓存不活动的组件实例,而不是销...

  • 前端优化

    一)内容层面 1、DNS解析优化(DNS缓存、减少DNS查找、keep-alive、适当的主机域名) 2、避免重...

  • 前端性能优化

    一)内容层面1、DNS解析优化(DNS缓存、减少DNS查找、keep-alive、适当的主机域名)2、避免重定向(...

网友评论

      本文标题:7.8 keep copies fresh 保持缓存内容新鲜

      本文链接:https://www.haomeiwen.com/subject/iydhcctx.html