浏览器缓存机制

浏览器缓存位置有Service WorkerMemory CacheDisk Cache。

当浏览器要请求资源时,会依次查看 Service Workermemory cachedisk cache的本地缓存,最后会通过网络请求检查缓存,有强制缓存且未失效,则使用强制缓存(code:200);强制缓存失效则使用协商缓存,服务端比较后返回 304 或者 200(并携带资源)。

强制缓存

http1.0 响应头设置强制缓存 Pragma: no-cache;

http1.0 响应头设置强制缓存 Cache-Control: max-age=3600 | no-cache | no-store | public | private;

  • max-age=0: 资源缓存的最大时间, 检验 ETagLast-Modified
  • no-cache, 会缓存内容,每次会发起请求,是否使用此内容由后续的对比决定;需要用另一种缓存策略来验证缓存(ETag,Last-Modified)
  • no-store 不缓存直接发起请求

缓存开关优先级:

Pragma > Cache-Control > Expires(本地时间可能和服务器时间不一致)

协商缓存

协商缓存和没有缓存在请求数量上和没有缓存并无差异,区别在于状态码及返回内容。有缓存时,状态码为304,没有实际的内容,响应内容体积大大节省了。

设置协商缓存有Etag 和 Last-modify

Etag  <----> If-None-Match,Etag依赖浏览器web service哈希算法计算得到hash值,(服务端返回Etag哈希值,客户端请求头If-None-Match携带来比较,不同浏览器可能计算不同不建议

Last-modify<----->If-Modify-since。服务端通过Last-Modified字段返回。客户端请求头If-Modified-Since或者If-Unmodified-Since带上Last-Modified。以s 为单位

缓存校验优先级:

Expires > Etag > Last-modified

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值