美文网首页
HTTP 缓存控制

HTTP 缓存控制

作者: my木子 | 来源:发表于2021-04-04 12:25 被阅读0次

    Web 缓存

    数据库缓存、服务器端缓存(代理服务器缓存、CDN 缓存)、浏览器(HTTP)缓存

    浏览器缓存(本地储存)

    HTTP 缓存、indexDB、cookie、localstorage 等等

    HTTP 缓存分类

    1. 首先通过 Cache-Control 验证强缓存是否可用,如果强缓存可用,那么直接读取缓存,并不会将请求发送到服务器。
    2. 如果不可以,那么进入协商缓存阶段,发起 HTTP 请求,服务器通过请求头中是否带上 If-Modified-Since 和 If-None-Match 这些条件请求字段检查资源是否更新:
      • 若资源更新(未命中协商缓存),那么返回资源和 200 状态码
      • 如果资源未更新(命中协商缓存),那么告诉浏览器直接使用缓存获取资源,返回 304 状态码

    强缓存

    • Expires 是一个绝对时间,存在服务器和浏览器时间不同步问题,不推荐使用
    • Cache-Control 是一个相对时间(例:Cache-Control:3600),比Expires优先级更高,推荐使用

    协商缓存(HTTP 返回码为304)

    • Last-Modify 存在精度问题(到秒)
    • Etag 返回的是一个校验码,可以保证每一个资源是唯一的,资源变化都会导致ETag变化

    相关扩展

    1. 用户行为与浏览器缓存相互关系
    新开窗口 有效 有效
    用户操作 Expires / Cache-Control Last-Modified / Etag
    地址栏回车 有效 有效
    页面链接跳转 有效 有效
    前进、后退 有效 有效
    F5 刷新 无效 有效
    **Ctrl+F5 **刷新 无效 无效
    1. 服务器端的缓存 CDN 、redis、数据库缓存等
    2. Nginx下关于缓存控制字段cache-control的配置说明

    http://www.alloyteam.com/2016/07/httphttp2-0spdyhttps-reading-this-is-enough/

    相关文章

      网友评论

          本文标题:HTTP 缓存控制

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