--- title: CacheStorage.keys() slug: Web/API/CacheStorage/keys translation_of: Web/API/CacheStorage/keys ---
{{APIRef("Service Workers API")}}{{SeeCompatTable}}
{{domxref("CacheStorage")}} 接口的 keys
()
方法返回一个 {{jsxref("Promise")}}对象,它使用一个数组resolve,该数组包含 {{domxref("CacheStorage")}} 对象按创建顺序跟踪的所有命名 {{domxref("Cache")}} 对象对应的字符串。使用此方法迭代所有 {{domxref("Cache")}} 对象。
caches.keys().then(function(keyList) { //对keyList做操作 });
一个使用 {{domxref("CacheStorage")}} 对象中 {{domxref("Cache")}} 名称数组resolve的 {{jsxref("Promise")}}
无。
在此代码片段中,我们监听{{domxref("ServiceWorkerGlobalScope.onactivate", "activate")}} 事件,然后运行一个 {{domxref("ExtendableEvent.waitUntil","waitUntil()")}} 方法,该方法在新的 service worker 被激活之前清除老的、无用的cache。 这里我们设置一个包含缓存名称的白名单。 通过使用 keys()方法
来返回{{domxref("CacheStorage")}} 对象中的keys集合,然后检查缓存key是否在白名单中,如果不存在,则使用 {{domxref("CacheStorage.delete")}} 方法来删除该缓存。
then.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 | Status | Comment |
---|---|---|
{{SpecName('Service Workers', '#cache-storage', 'CacheStorage')}} | {{Spec2('Service Workers')}} | Initial definition. |
{{CompatibilityTable}}
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | {{CompatChrome(40)}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(44)}}[1] | {{CompatNo}} | {{CompatOpera(27)}} | {{CompatNo}} |
Feature | Android Webview | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{CompatChrome(40)}} | {{CompatChrome(40)}} | {{CompatGeckoMobile(44)}} | {{CompatVersionUnknown}} | {{CompatOperaMobile(27)}} | {{CompatVersionUnknown}} |
[1] Service workers (and Push) have been disabled in the Firefox 45 & 52 Extended Support Releases (ESR.)