zoukankan      html  css  js  c++  java
  • web缓存之--http缓存机制

    一、web缓存可以分为数据库缓存、代理服务器缓存、浏览器缓存。

      其中浏览器缓存又包含很多内容:http缓存、indexDb、cookie、localStorage等。本片只讨论http缓存相关内容。

    二、http缓存是通过头信息控制缓存。

      a. 分为强缓存和协商缓存两种。

      b. 强缓存如果命中,则不需要和服务器发生交互。

      c. 协商缓存不管是否命中,都要和服务器发生交互。

      d. 强缓存的优先级高于协商缓存。

    三、强缓存。

      a. 可以理解为无需验证的缓存策略。

      b. 响应头中有两个字段来表明规则Expires/Cache-Control。

      c. Expires指定资源过期时间,超过这个时间点表明资源过期。是http1.0的标准。

      d. Cache-Control是http1.1的标准,优先级高于Expires。可能的取值有:max-age, s-maxage, public, private, no-cache, no-store, mast-revalidate。

      e. max-age指定资源过期时间,单位是s。在指定时间内直接使用缓存,不发送请求。

      d. s-maxage作用同max-age,但仅限于共享缓存,在私有缓存中被忽略。

      e. public表示响应既可以被代理服务器缓存又能被客户端缓存。

      f. private表示响应只能被客户端缓存。

      g. no-cache强制所有缓存了该响应的用户,在使用已缓存的数据前,发送带验证器的请求到服务器。

      h. no-store禁止缓存,每次请求都要向服务器重新获取。

      i. mast-revalidate表示如果缓存资源已过期则请求服务器重新拉取。

      

    四、协商缓存。

      a. 缓存的资源到期了,不代表资源的内容发生了改变,如果和服务器上的资源没有差异,实际上没有必要再次请求。

      b. 浏览器第一次请求数据后会将数据和响应头部的缓存标识存储起来,再次请求时会带上存储的头部字段,服务器端验证是否可用。返回304代表资源没有发生改变可以使用缓存的数据,获得新的过期时间。返回200就相当于重新请求了一遍资源并替换旧资源。

      c. Last-modified  /  If-Modified-Since: Last-modified服务器端资源的最后修改时间,响应头部会带上这个标识。第一次请求后浏览器记录这个时间,再次请求时,请求头部带上

    If-Modified-Since即之前记录下的时间。服务器端收到带If-Modified-Since的请求后回去和资源的最后修改时间对比。相等返回304,否则返回最新资,源状态码200。

      d. Etag  /  If-None-Match:原理同Last-modified  /  If-Modified-Since,只不过Etag是服务器端生成的一段hash字符串,精确度比laste-modified要高,属于强验证,要求资源字节级别的一致。

      

      

  • 相关阅读:
    Finite Difference Method with Mathematica
    评论
    The Woman in Red Is Seen as a Threat by Other Wom
    Why Does Everyone Else Appear to Be Succeeding?
    The Sorrows of Young Werther
    【洛谷P5607】无力回天 NOI2017
    【YbtOJ#532】往事之树
    【YbtOJ#582】大收藏家
    【牛客Wannafly挑战赛23 F】计数
    【YbtOJ#573】后缀表达
  • 原文地址:https://www.cnblogs.com/zifayin/p/8962637.html
Copyright © 2011-2022 走看看