手动执行路由的workbox.expiration.Plugin.deleteCacheAndMetadata()

时间:2018-08-09 14:46:34

标签: workbox

方法workbox.expiration.Plugin.deleteCacheAndMetadata()最近已添加到工作箱中。 如何为已设置要缓存的特定路由触发此操作?

这里的用例是,当客户端上发生某些操作时,我需要删除缓存。我可以直接从客户端删除缓存,但这会保留元数据(在indexedDB中)。因此,我希望将一条消息发送给服务人员,并使用workbox方法进行清理。 如何获得正确的过期插件实例的调用方法?

1 个答案:

答案 0 :(得分:0)

我认为要记住的主要事情是workbox.expiration.Plugin实例没有与路线相关联,而是传递给了给定的策略。它可以存在于路由定义之外,以后可以在代码中引用它。

这是一个例子:

const expirationPlugin = new workbox.expiration.Plugin({
  maxEntries: 20,
}),

workbox.routing.registerRoute(
  new RegExp('/images/'),
  workbox.strategies.cacheFirst({
    cacheName: 'image-cache',
    plugins: [
      expirationPlugin,
    ],
  })
);

self.addEventListener('message', (event) => {
  if (event.data === 'clear-cache') {
    expirationPlugin.deleteCacheAndMetadata();
  }
});