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要高,属于强验证,要求资源字节级别的一致。

      

      

  • 相关阅读:
    Linux中rsync备份数据使用实例
    8个Date命令使用示例
    Linux中如何使用alias命令
    在LVM中恢复已删除的逻辑卷
    使用Dmidecode获取硬件信息使用实例
    Linux系统使用SSH登录之前如何显示横幅消息
    在Linux中修改打开文件数量限制的3种方法
    Linux中监控磁盘分区和使用情况的几个工具
    如何解决Ubuntu提示没有找到ifconfig命令
    Linux中ip命令的使用实例
  • 原文地址:https://www.cnblogs.com/zifayin/p/8962637.html
Copyright © 2011-2022 走看看