浏览器缓存中 Memory Cache 和 Disk Cache, 有啥区别?

Memory Cache 和 Disk Cache 的区别

在浏览器缓存中,Memory Cache 和 Disk Cache 是两种不同的缓存类型,它们有以下区别:

  1. 存储位置:Memory Cache 存储在内存中,而 Disk Cache 存储在硬盘中。
  2. 读取速度:Memory Cache 读取速度比 Disk Cache 快,因为内存访问速度比硬盘访问速度快。
  3. 存储容量:Memory Cache 存储容量比较小,一般只有几十兆,而 Disk Cache 存储容量比较大,可以有数百兆或者更多。
  4. 生命周期:Memory Cache 生命周期短暂,一般只在当前会话中有效,当会话结束或者浏览器关闭时,Memory Cache 就会被清空;而 Disk Cache 生命周期比较长,数据可以被保存很长时间,即使浏览器关闭了,下次打开还可以使用。

一般来说,浏览器在请求资源时,会优先从 Memory Cache 中读取,如果没有找到再去 Disk Cache 中查找。如果两种缓存中都没有找到,则会向服务器发送请求。如果需要强制刷新缓存,可以通过清空浏览器缓存来实现。

什么情况下资源会缓存在 Memory Cache, 什么情况下会缓存在 Disk Cache ?

浏览器中的缓存是为了提高网页访问速度和减少网络流量而存在的。缓存分为 Memory Cache 和 Disk Cache 两种。

Memory Cache 是浏览器内存缓存,资源会被缓存在内存中,由于内存读取速度快,所以 Memory Cache 的读取速度也较快。资源被缓存在 Memory Cache 中的情况有:

  1. 当前页面中通过 或者 <script> 标签引入的资源;
  2. 当前页面通过 XMLHttpRequest 或 Fetch API 请求获取到的资源。

Disk Cache 是浏览器磁盘缓存,资源会被缓存在磁盘中。由于磁盘读取速度相对内存较慢,所以 Disk Cache 的读取速度也较慢。资源被缓存在 Disk Cache 中的情况有:

  1. 当前页面中通过 <img> 标签引入的资源;
  2. 当前页面中通过 <audio><video> 标签引入的资源;
  3. 当前页面中通过 iframe 加载的资源;
  4. 当前页面中通过 WebSocket 加载的资源;
  5. 通过 Service Worker 缓存的资源。

一般来说,比较大的资源会被缓存到 Disk Cache 中,而较小的资源则会被缓存到 Memory Cache 中。如果需要手动清除缓存,可以在浏览器设置中找到相应选项进行操作。