浏览器缓存

269 阅读2分钟

简介说明

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

  1. from memory cache
  2. from disk cache
  3. 资源本身的大小(如:1.5k)

三种状态的区别

from memory cache

该项资源是直接从内存中拿到的,不会重新请求服务器获取数据
该项资源一般是已经加载过该资源且缓存在了内存当中
当关闭该页面时,此资源就被内存释放掉了,再次重新打开相同页面时不会出现from memory cache的情况

from disk cache

该项资源是从磁盘当中取出的,也是在已经在之前的某个时间加载过该资源,不会请求服务器但是此资源不会随着该页面的关闭而释放掉,因为是存在硬盘当中的,下次打开仍会from disk cache

资源本身大小数值

当http状态为200是实实在在从浏览器获取的资源,当http状态为304时该数字是与服务端通信报文的大小,并不是该资源本身的大小,该资源是从本地获取的

chrome采取措施的准则

什么时候是from memory cache 什么时候是from disk cache 呢?

即哪些资源会放在内存当中,哪些资源浏览器会放在磁盘上呢,结果如下下表所示

  1. 样式表一般在磁盘中,不会缓存到内存中去,因为css样式加载一次即可渲染出网页
  2. 但是脚本却可能随时会执行,如果脚本在磁盘当中,在执行该脚本需要从磁盘中取到内存当中来,这样的IO开销是比较大的,有可能会导致浏览器失去响应

不同浏览器策略是否一致

  1. 以上的数据及统计都是在chrome浏览器下进行的,在Firefox下并没有from memory cache以及from disk cache的状态展现;
  2. 相同的资源在chrome下是from disk/memory cache,但是Firefox统统是304状态码,即Firefox下会缓存资源,但是每次都会请求服务器对比当前缓存是否更改,chrome不请求服务器,直接拿过来用,所以一般可以看到chrome比较快