【每日一题】浏览器缓存

前端印记

共 1540字,需浏览 4分钟

 ·

2021-09-22 07:50

人生苦短,总需要一点仪式感。比如学前端~

浏览器缓存主要分为四个阶段

  • 强制缓存阶段

  • 协商缓存阶段

  • 启发式缓存阶段

  • 缓存失败阶段

强制缓存阶段

先在本地查找该资源,如果有发现该资源,而且该资源还没有过期,就使用这一个资源,完全不会发送 http 请求到服务器。

判断过期通过Expires(http1.1)或Cache-Control(http1.1)来判断。具体可以看这篇文章:【每日一题】了解强缓存

协商缓存阶段

如果在本地缓存找到对应的资源,但是不知道该资源是否过期或者已经过期,则发一个 http 请求到服务器,然后服务器判断这个请求,如果请求的资源在服务器上没有改动过,则返回 304 Not Modified,让浏览器使用本地找到的那个资源。

关于协商缓存的详细知识请看这篇文章:【每日一题】你了解协商缓存吗?

启发式缓存阶段

当缓存过期时间的字段一个都没有的时候,浏览器下次并不会直接进入协商阶段,而是先进入启发式缓存阶段:它根据响应头中 2 个时间字段 DataLast-Modified 之间的时间差值,取其值的 10% 作为缓存时间周期。
也就是说:当存有 Last-Modified 字段的时候,即使是断网,且强缓存都失效后,也有一段时间是直接读取缓存文件的。Etag 是没有这个阶段的。

缓存失败阶段

当服务器发现请求的资源已经修改过,或者这是一个新的请求(在本来没有找到资源),服务器则返回该资源的数据,并且返回 200
当然这个是指找到资源的情况下,如果服务器上没有这个资源,则返回 404

所有《每日一题》的 知识大纲索引脑图 整理在此:https://www.yuque.com/dfe_evernote/interview/everyday
你也可以点击文末的 “阅读原文” 快速跳转


END
愿你历尽千帆,归来仍是少年。

让我们一起携手同走前端路!

关注公众号回复【加群】即可

浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报