CacheStorage.keys()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.
备注: 此特性在 Web Worker 中可用。
CacheStorage
接口的 keys()
方法返回一个 Promise
对象,它会兑现一个包含 CacheStorage
对象按创建顺序跟踪的所有具名 Cache
对象对应的字符串的数组。使用此方法会迭代所有 Cache
对象。
你可以通过窗口的 Window.caches
属性或 worker 的 WorkerGlobalScope.caches
属性访问 CacheStorage
。
语法
js
keys()
参数
无。
返回值
一个会兑现为 CacheStorage
对象中所有 Cache
对象的名称的数组的 Promise
。
示例
在此代码片段中,我们监听activate
事件,然后运行一个 waitUntil()
方法,该方法在新的 service worker 被激活之前清除老的、无用的 cache。这里我们设置一个包含缓存名称的白名单。通过使用 keys()
方法来返回 CacheStorage
对象中的 keys 集合,然后检查缓存 key 是否在白名单中,如果不存在,则使用 CacheStorage.delete
方法来删除该缓存。
js
this.addEventListener('activate', function(event) {
var cacheWhitelist = ['v2'];
event.waitUntil(
caches.keys().then(function(keyList) {
return Promise.all(keyList.map(function(key) {
if (cacheWhitelist.indexOf(key) === -1) {
return caches.delete(key);
}
});
})
);
});
规范
Specification |
---|
Service Workers # cache-storage-keys |
浏览器兼容性
BCD tables only load in the browser