你必须知道的缓存机制

320 阅读2分钟

参开文档:缓存机制

报文格式:

http请求报文:

请求行 http头 请求主体

http请求响应报文:

状态行 http头 响应主体

缓存过程

先请求浏览器缓存,如果成功则返回,否则发送http请求到服务端,查看是否可用服务端的缓存,有则返回(304),无则重新请求资源(200);

强制缓存(浏览器端缓存)

第一次发送http请求,首先查找浏览器中缓存和缓存标识,若两者均无转发送请求到服务端,若有混村但缓存标识过期,则继续发送http请求到服务端,若存在缓存且缓存标示未过期则直接返回数据。 (查看参考文档中示例图)

常用缓存策略:

  • expires(放在http头中 HTTP/1)

第一次请求时响应头部返回保存在浏览器中的过期时间,是个固定时间值,只需查找请求时间是否超过该值。但是存在服务器与客户端时间不一致的影响

  • cache-control (存放时长 HTTP/1.1)

可取多个值:

private

public

no-cache

no-store

max-age: 时长

浏览器缓存位置

from memory cache

存储在进程内存中的缓存,读写快,随进程中断而消失

from disk cache

存储在硬盘上,读写操作较慢,存在io操作,永久存储

协商缓存(服务端)

常用策略:

  • last-modified/if-modified-since
  • etag / if-none-match

后者优先级大禹前者;两对参数分别对应两种策略的响应头和请求头携带的参数。 第一种策略通过记录最后更新数据的时间来标识资源是否过期,后一种则通过唯一的标示etag来标识最新的资源状态值