浏览器Http的缓存机制

浏览器Http的缓存机制

  1. 浅谈浏览器http的缓存机制 - three_bird的博客 - 博客频道 - CSDN.NET

  2. 浏览器 HTTP 协议缓存机制详解 - leejun2005的个人页面 - 开源中国社区

流程图

主要信息

  1. pragma –> “no_cache” (1.0产物,待报废)
  2. Expires –> 响应头字段,告诉浏览器该数据在失效日期前可以缓存,实体主体过期时间(GMT),可为0或-1. 但是是服务器时间与客户端时间可能不同步 (1.0产物,待报废,优先级低于pragma)
  3. Cache-Control (1.1产物,优先级高于Expires)
  4. max-age=30(second) 客户端对给请求缓存 30秒内都不请求服务器 (用来代替Expires)
  5. last-modified 资源修改时间
  6. ETag 指示资源的状态唯一标识
  7. 原理

    当资源第一次被访问的时候,http返回200的状态码,并在头部携带当前请求的一些描述信息,如Etag,Last-Modified,Expires…等.浏览器会将资源保存到缓存目录中去,同时将携带的头信息也保存到缓存中.当第二次调用该请求时,浏览器会先检查catch目录下是否有该文件,如果有:并且还没有过期,那么直接从catch中读取该资源,不再发送请求;如果已经过期,则浏览器会发送一次请求并携带”If-Modified-Since Thu, 26 Nov 2009 13:50:19 GMT 和 If-None-Match ”8fb8b-14-4794674acdcc0″,其中粗体的部分的数据为第一次响应中返回的last-modifiedEtag的值,服务器在接收到这个请求的时候,先解析header里的头信息,如果请求的资源的修改时间没有变过,或者Etag信息没有变化.则服务器直接返回304的状态码,不再返回资源.反之服务器会将资源返回,并带上新资源的状态信息.

  8. KeyWords
  9. Public指示响应可被任何缓存区缓存
  10. Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效
  11. no-cache指示请求或响应消息不能缓存
  12. no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
  13. max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应
  14. min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应
  15. max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
赞 赏
真诚赞赏 手有余香
用微信请张岩喝杯咖啡?

微信支付

用支付宝请张岩喝杯咖啡?

支付宝