方法workbox.expiration.Plugin.deleteCacheAndMetadata()
最近已添加到工作箱中。
如何为已设置要缓存的特定路由触发此操作?
这里的用例是,当客户端上发生某些操作时,我需要删除缓存。我可以直接从客户端删除缓存,但这会保留元数据(在indexedDB中)。因此,我希望将一条消息发送给服务人员,并使用workbox方法进行清理。 如何获得正确的过期插件实例的调用方法?
答案 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();
}
});