一切从用户开始请求资源文件说起吧。

用户向浏览器请求资源问题,浏览器会检测本地是否有对应的缓存文件。

  1. 如果不存在,则给服务器发送请求,服务器返回资源的同时,在 response header 中会携带缓存策略的内容,浏览器根据缓存策略缓存文件。

  2. 如果缓存存在,浏览器会根据 max-age 或 expires(max-age 优先级高于 expires)判断缓存文件是否过期。

  • 如果没有过期,则直接使用浏览器缓存(from memory cache)。

  • 如果过期了,则会向服务器发送请求,如果存在 eTag,则 request header 中会携带 if-none-match,和服务器的 hash 值比较,一致的话则返回 304,告诉浏览器直接使用本地缓存文件。不一致则重新发起请求,请求资源文件并更新本地缓存文件。不存在 eTag,则 request header 中携带 last-modified 字段,流程同 eTag 一致。(eTag 优先级高于 last-modified)

赞(0) 踩(0)
发表我的评论

最新评论

  1. 暂无评论