内存缓存(from memory cache)和硬盘缓存(from disk cache) 的区别

引言

?命中强制缓存时,资源会显示 from memory cache or from disk cache
[外链图片转存失败(img-wT6iPrMH-1567231043642)(evernotecid://79474A00-BD8E-4188-8D23-B0C0D70967FE/appyinxiangcom/1540789/ENResource/p2761)]

两者的区别

内存缓存(from memory cache)

内存缓存具有两个特点,分别是快速读取时效性
快速读取:内存缓存会将编译解析后的文件,直接存入该进程的内存中,占据该进程一定的内存资源,以方便下次运行使用时的快速读取。
时效性:缓存时效性很短,会随着进程的释放而释放

硬盘缓存(from disk cache)

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

匹配优先级:

浏览器读取命中强缓存资源的顺序为memory cache -> disk cache

  • 先去内存看,如果有,直接加载;
  • 如果内存没有,则取硬盘获取,如果有直接加载;
  • 如果硬盘也没有,那么就进行网络请求;
  • 加载到的资源缓存到硬盘和内存。
总结对比表格:
比较读取速度时效性容量匹配优先级
内存缓存快速进程关闭,内存清空
硬盘缓存速度比内存缓存慢,需要重新解析文件,进行I/O操作时效长
一些疑问点
Q:那么既然内存缓存这么高效,我们是不是能让数据都存放在内存中呢?

计算机中的内存一定比硬盘容量小得多,操作系统需要精打细算内存的使用,所以能让我们使用的内存必然不多。

Q:浏览器会把哪些文件丢进内存中?哪些丢进硬盘中?
  • 对于大文件来说,大概率是不存储在内存中的,反之优先
  • 当前系统内存使用率高的话,文件优先存储进硬盘

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

Q:为什么一般js和图片文件会放到内存缓存,css 放在硬盘缓存?
  • 样式表一般在磁盘中,不会缓存到内存中去,因为CSS样式加载一次即可渲染出网页。
  • 但是,脚本却可能随时会执行,如果脚本在磁盘当中,在执行该脚本需要从磁盘中取到内存当中来。这样的IO开销是比较大的,有可能会导致浏览器失去响应。因此,脚本一般在内存中。
参考
  1. 深入理解浏览器的缓存机制
  2. 内存缓存和硬盘缓存的区别
  3. 切底了解浏览器缓存
  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值