在chrome浏览器中的控制台Network中size栏一般会有三种状态css
1.from memory cachechrome
2.from disk cache浏览器
3.资源自己的大小(如:1.5k)缓存
那么问题来了服务器
1.三种区别在哪里;2.浏览器采起不一样措施的原则是什么;3.其余浏览器的策略网络
下面分别讲述以上三个问题spa
1.三种区别在哪.net
from memory cache:字面理解是从内存中,其实也是字面的含义,这个资源是直接从内存中拿到的,不会请求服务器通常已经加载过该资源且缓存在了内存当中,当关闭该页面时,此资源就被内存释放掉了,再次从新打开相同页面时不会出现from memory cache的状况orm
from disk cache:同上相似,此资源是从磁盘当中取出的,也是在已经在以前的某个时间加载过该资源,不会请求服务器可是此资源不会随着该页面的关闭而释放掉,由于是存在硬盘当中的,下次打开仍会from disk cacheblog
资源自己大小数值:当http状态为200是实实在在从浏览器获取的资源,当http状态为304时该数字是与服务端通讯报文的大小,并非该资源自己的大小,该资源是从本地获取的
2.chrome采起措施的准则
何时是from memory cache 何时是from disk cache 呢?
即哪些资源会放在内存当中,哪些资源浏览器会放在磁盘上呢,结果以下下表所示
状态 | 类型 | 说明 |
200 | form memory cache | 不请求网络资源,资源在内存当中 |
200 | form disk ceche | 不请求网络资源,在磁盘当中 |
200 | 资源大小数值 | 从服务器下载最新资源 |
304 | 报文大小 | 请求服务端发现资源没有更新,使用本地资源 |
以上是chrome在请求资源是最多见的两种http状态码
因而可知样式表通常在磁盘中,不会缓存到内存中去,由于css样式加载一次便可渲染出网页
可是脚本却可能随时会执行,若是脚本在磁盘当中,在执行该脚本须要从磁盘中取到内存当中来
这样的IO开销是比较大的,有可能会致使浏览器失去响应
3.不一样浏览器策略是否一致
以上的数据及统计都是在chrome浏览器下进行的
在Firefox下并无from memory cache以及from disk cache的状态展示
相同的资源在chrome下是from disk/memory cache,可是Firefox通通是304状态码
即Firefox下会缓存资源,可是每次都会请求服务器对比当前缓存是否更改,chrome不请求服务器,直接拿过来用
这也是为啥chrome比较快的缘由之一吧,
固然以上是粗略的研究chrome资源的获取策略,至于chrome如何保证资源的更新,
即何时200,何时304还须要更深刻的研究 参考:https://blog.csdn.net/garrettzxd/article/details/80684880