失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 聊一聊缓存 [from memory cache 和 from disk cache]

聊一聊缓存 [from memory cache 和 from disk cache]

时间:2023-09-19 17:47:28

相关推荐

聊一聊缓存 [from memory cache 和 from disk cache]

今天看到了一个问题,如果浏览器关闭了再打开, 请求还是from cache吗?

笼统的说yes

现在简单的来分析一下,首先,大家可以想一下,浏览器的缓存存放在哪里,如何在浏览器中判断强制缓存是否生效?

先看一下这张图

会发现在浏览器开发者工具的Network的Size栏会出现的三种情况:

from memory cachefrom disk cache资源本身大小(比如:770B)

状态码及区别:

from memory cache(内存中的缓存): 不访问服务器,一般已经加载过该资源且缓存在了内存当中,直接从内存中读取缓存。浏览器关闭后,数据将不存在(资源被释放掉了),再次打开相同的页面时,不会出现from memory cache。

from disk cache(是硬盘中的缓存): 不访问服务器,已经在之前的某个时间加载过该资源,直接从硬盘中读取缓存,关闭浏览器后,数据依然存在,此资源不会随着该页面的关闭而释放掉下次打开仍然会是from disk cache。

304 Not Modified: 访问服务器,发现数据没有更新,服务器返回此状态码。然后从缓存中读取数据。

在浏览器中,浏览器会在js和图片等文件解析执行后直接存入内存缓存中,那么当刷新页面时只需直接从内存缓存中读取(from memory cache);而css文件则会存入硬盘文件中,所以每次渲染页面都需要从硬盘读取缓存(from disk cache)。

内存缓存(from memory cache)和硬盘缓存(from disk cache)特点

(1)内存缓存(from memory cache):内存缓存具有两个特点,分别是快速读取和时效性:

1、快速读取:内存缓存会将编译解析后的文件,直接存入该进程的内存中,占据该进程一定的内存资源,以方便下次运行使用时的快速读取。

2、时效性:一旦该进程关闭,则该进程的内存则会清空。

(2)硬盘缓存(from disk cache):硬盘缓存则是直接将缓存写入硬盘文件中,读取缓存需要对该缓存存放的硬盘文件进行I/O操作,然后重新解析该缓存内容,读取复杂,速度比内存缓存慢。

缓存原理

1、先查找内存,如果内存中存在,从内存中加载;

2、如果内存中未查找到,选择硬盘获取,如果硬盘中有,从硬盘中加载;

3、如果硬盘中未查找到,那就进行网络请求;

4、加载到的资源缓存到硬盘和内存;

执行顺序

现加载一种资源(例如:图片):

访问-> 200 -> 退出浏览器

重新进来-> 200(from disk cache) -> 刷新 -> 200(from memory cache)

附一张流程图梳理一下

如果觉得《聊一聊缓存 [from memory cache 和 from disk cache]》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。