【问题标题】:How to delete cashing by name in Javascript - pwa如何在 Javascript 中按名称删除兑现 - pwa
【发布时间】:2020-04-09 18:13:08
【问题描述】:

我正在工作的 PWA 应用需要删除一个条目。

以下代码用于检查缓存。

self.addEventListener('activate', function (event) {
    console.log('[Service Worker] Activating Service Worker ....', event);
    event.waitUntil(
        caches.keys()
            .then(function (keyList) {
                console.log('[Service Worker] keyList ....', keyList);
                return Promise.all(keyList.map(function (key) {
                    if (key !== CACHE_STATIC_NAME && key !== CACHE_DYNAMIC_NAME) {
                        console.log('[Service Worker] Removing old cache.', key);
                        return caches.delete(key);
                    }
                }));
            })
    );
    return self.clients.claim();
});

我需要根据特定的缓存键删除特定缓存内的条目。

【问题讨论】:

  • 我不清楚您要完成什么,以及这与您发布的代码有何不同。您当前的代码根据缓存名称 (caches.delete(key)) 删除缓存。您是在谈论基于特定缓存键删除特定缓存内的条目吗?还是别的什么?
  • @JeffPosnick 是的,我需要根据特定的缓存键删除特定缓存内的条目。

标签: javascript caching service-worker progressive-web-apps


【解决方案1】:

这是一个辅助函数,它接收缓存名称和缓存键的 URL,并删除与该缓存键对应的 Response

async function deleteCacheKeyFromCache(cacheName, cacheKey) {
  const cache = await caches.open(cacheName);
  await cache.delete(cacheKey);
}

// Use it like:
// await deleteCacheKeyFromCache('my-cache', '/index.html');

如果cacheName 不存在,或者cacheKey 不存在于cacheName 中,则该函数实际上是无操作的。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 2021-04-27
相关资源
最近更新 更多