2019
09-05

Chrome浏览器的文件缓存from memory cache与from disk cache详解

使用Chrome的审查元素的时候发现有些资源Size(文件大小)显示“from disk cache”或者“from memory cache”当时不是很理解

Chrome浏览器的文件缓存from memory cache与from disk cache详解

from disk cache或者from memory cache的解释

Chrome里面的 [from disk cache] & [from memory cache]

我们在使用 Chrome 的 devtools 里的 network 查看网络请求情况时,常常会在 Size 那一列看到 (from disk cache) 和 (from memory cache) 的灰字信息,

from disk cache或者from memory cache这些信息是什么意思?

from disk cache或者from memory cache又是在什么情况下会出现呢?

从字面意思不难理解,这都是浏览器的一种缓存机制。disk 是从硬盘中读取资源,而 memory 则是从内存中获取资源,两者的区别就是内存和硬盘的区别:memory 中的资源是临时的,当关闭或者刷新页面后就会丢失;而 disk 是存在硬盘上的,可以从文件夹中找到。

那是不是 memory 中的资源等下载加载页面的时候又要从服务器获取呢?其实不然,memory 中的资源其实也同时会存在 disk 中,所以下一次加载,浏览器会优先从 disk 中检索。

哪些资源会被浏览器缓存?

首先这个资源是需要通过 GET 请求的,然后资源类型为[脚本、样式表、图片、媒体、字体]是会缓存在 disk 中的,而其中的 [ 脚本、图片、字体 ] 又是会缓存在 memory 中的。

浏览器对缓存资源大小有没有限制?

Chrome 是使用动态缓存机制,也就是说在“默认行为”下,它所使用的缓存空间大小是自我控制的,例如,当网速很慢的是,Chrome 会尝试尽可能多的缓存资源;另外,当你计算机本身就存储空间不足的时候,它又会根据算法存储重要的资源。

我们上面说到“默认行为”,其实也可以人为控制其使用的缓存空间。设置方法是打开 Chrome 快捷方式的【属性】,在【目标】后面加上 -disk-cache-size=xxx 这个参数,xxx 就是空间大小,单位是 Byte。另外使用 -disk-cache-dir 这个参数还能修改缓存目录。

http状态码

200 from memory cache

不访问服务器,直接读缓存,从内存中读取缓存。此时的数据时缓存到内存中的,当kill进程后,也就是浏览器关闭以后,数据将不存在。

但是这种方式只能缓存派生资源。

200 from disk cache

不访问服务器,直接读缓存,从磁盘中读取缓存,当kill进程时,数据还是存在。

这种方式也只能缓存派生资源

304 Not Modified

访问服务器,发现数据没有更新,服务器返回此状态码(不返回资源)。然后从缓存中读取数据。

三级缓存原理:

先去内存看,如果有,直接加载

如果内存没有,择取硬盘获取,如果有直接加载

如果硬盘也没有,那么就进行网络请求

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

在chrome浏览器中的控制台Network中size栏通常会有三种状态

1.from memory cache

2.from disk cache

3.资源本身的大小(如:1.5k)

免费支持本站

支付宝打赏支付宝打赏 微信打赏微信打赏

本文》有 0 条评论

留下一个回复 (您的评论需要经过审核才能显示)