Memory Cache 和 Disk Cache 的区别
在浏览器缓存中,Memory Cache 和 Disk Cache 是两种不同的缓存类型,它们有以下区别:
- 存储位置:Memory Cache 存储在内存中,而 Disk Cache 存储在硬盘中。
- 读取速度:Memory Cache 读取速度比 Disk Cache 快,因为内存访问速度比硬盘访问速度快。
- 存储容量:Memory Cache 存储容量比较小,一般只有几十兆,而 Disk Cache 存储容量比较大,可以有数百兆或者更多。
- 生命周期:Memory Cache 生命周期短暂,一般只在当前会话中有效,当会话结束或者浏览器关闭时,Memory Cache 就会被清空;而 Disk Cache 生命周期比较长,数据可以被保存很长时间,即使浏览器关闭了,下次打开还可以使用。
一般来说,浏览器在请求资源时,会优先从 Memory Cache 中读取,如果没有找到再去 Disk Cache 中查找。如果两种缓存中都没有找到,则会向服务器发送请求。如果需要强制刷新缓存,可以通过清空浏览器缓存来实现。
什么情况下资源会缓存在 Memory Cache, 什么情况下会缓存在 Disk Cache ?
浏览器中的缓存是为了提高网页访问速度和减少网络流量而存在的。缓存分为 Memory Cache 和 Disk Cache 两种。
Memory Cache 是浏览器内存缓存,资源会被缓存在内存中,由于内存读取速度快,所以 Memory Cache 的读取速度也较快。资源被缓存在 Memory Cache 中的情况有:
- 当前页面中通过 或者 <script> 标签引入的资源;
- 当前页面通过 XMLHttpRequest 或 Fetch API 请求获取到的资源。
Disk Cache 是浏览器磁盘缓存,资源会被缓存在磁盘中。由于磁盘读取速度相对内存较慢,所以 Disk Cache 的读取速度也较慢。资源被缓存在 Disk Cache 中的情况有:
- 当前页面中通过
<img>
标签引入的资源; - 当前页面中通过
<audio>
或<video>
标签引入的资源; - 当前页面中通过
iframe
加载的资源; - 当前页面中通过
WebSocket
加载的资源; - 通过
Service Worker
缓存的资源。
一般来说,比较大的资源会被缓存到 Disk Cache 中,而较小的资源则会被缓存到 Memory Cache 中。如果需要手动清除缓存,可以在浏览器设置中找到相应选项进行操作。