http 缓存机制

  • http 缓存机制,看这篇文章即可:https://www.cnblogs.com/slly/p/6732749.html

  • 优先级从高到低分别是Pragma -> Cache-Control -> Expires

  • 需要注意的是,响应报文中Expires所定义的缓存时间是相对服务器上的时间而言的,其定义的是资源“失效时刻”。

  • RFC 规定,如果 ETag 和 Last-Modified 都有,则必须一次性都发给服务器,没有优先级。
    同时传入服务器时,服务器可以根据自己的缓存机制的需要,选择ETag或者是Last-Modified来做缓存判断的依据(重新给浏览器资源还是让浏览器使用缓存资源),甚至可以两个同时参考。

  • 强制刷新时,Chrome 51 中会包含两个头部信息, 作用就是让中间节点(比如Proxy)的Cache对这个请求也失效,这样返回的绝对是新鲜的资源。

Cache-Control: no-cache
Pragma: no-cache
  • Last-Modified使用文件最后修改时间作为文件标识值,它无法处理文件一秒内多次修改的情况,而且只要文件修改了哪怕文件实质内容没有修改,也会重新返回资源内容;
    ETag作为“被请求变量的实体值”,其完全可以解决Last-Modified的这个问题,但是其计算过程需要耗费服务器资源。

  • 参考链接:http://imweb.io/topic/5795dcb6fb312541492eda8c

原文地址:https://www.cnblogs.com/cag2050/p/7279847.html