You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何删除Cache后仍可通过match方法读取缓存内容?

Cache API 删除缓存后仍能通过旧实例读取内容的原因

你遇到的这个现象是Cache API的设计特性导致的,具体原因如下:

  • 缓存实例与存储的分离:caches.open("test")返回的是内存中的Cache实例对象,它和浏览器缓存存储中的条目分属两个层面。调用caches.delete("test")仅删除了浏览器持久化存储里的"test"缓存条目,但已经拿到的myCache实例仍保存在内存中,且保留着之前加载的缓存数据。

  • 浏览器检查器的显示逻辑:检查器里看不到缓存,是因为它读取的是持久化存储的状态,内存中的实例数据不会在这里展示。只要myCache实例还没被垃圾回收,它内部的缓存数据就仍可被访问。

  • 实例的独立性:如果之后再调用caches.open("test"),会得到一个全新的空Cache实例,和之前的myCache不是同一个对象,此时调用match()会返回undefined。

你的测试代码:

var myCache = await caches.open("test"); // create a new cache
await myCache.add(new Request("/index.html")); // page was sucessfully stored
await caches.delete("test");
myCache.match("/index.html"); // I still read from deleted cache!

内容的提问来源于stack exchange,提问作者Jan Turoň

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:15:13