CacheStorage.delete()

Experimental

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

CacheStorage 接口的 delete() 方法查找匹配 cacheName 的 Cache 对象,如果找到,则删除 Cache 对象并返回一个resolve为true的 Promise . 如果未找到 Cache 对象,则返回 false.

语法

caches.delete(cacheName).then(function(true) {
  //your cache is now deleted
});

Returns

如果找到 Cache 对象,删除它,返回一个resolve为 truePromise ,否则,返回 false .

Parameters

cacheName
想要删除的 cache 对象的名称。

实例

在此代码片段中,我们等待一个activate事件,然后运行一个 waitUntil() 块,其在一个新的 service worker 被激活前清除所有旧的、未使用的cache. 这里我们有一个白名单,其中包含我们想要保留的cache的name. 我们使用 CacheStorage.keys 返回 CacheStorage 对象中cache的键,然后检查每个键值,以查看它是否在白名单中。如果没有,我们使用 delete() 删除它。

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 Status Comment
Service Workers
CacheStorage
Working Draft Initial definition.

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 40.0 44 (44)[1] 未实现 ? 未实现
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support 未实现 未实现 44.0 (44) (Yes) (Yes) (Yes) 40.0

[1] Service workers (and Push) have been disabled in the Firefox 45 & 52 Extended Support Releases (ESR.)

See also