Сохраняйте предварительный кеш при удалении другого кеша в рабочем сервисе работника - PullRequest
0 голосов
/ 03 февраля 2020

Я использую приведенный ниже код для очистки созданного рабочего ящика, но он также удаляет прекаш, которым управляет сам рабочий ящик.

Пожалуйста, дайте мне знать, если существует лучший способ.

// Clean up caches in activate event to ensure no pages are using the old caches.
self.addEventListener('activate', (event) => {
    const promiseChain = caches.keys()
        .then((cacheNames) => {
            // Step through each cache name and delete it 
            return Promise.all(
                cacheNames.map((cacheName) => caches.delete(cacheName))
            );
        });

    // Keep the service worker alive until all caches are deleted.
    event.waitUntil(promiseChain);
});

1 Ответ

0 голосов
/ 08 февраля 2020

Приведенный ниже фрагмент кода отлично работает для удаления других кэшей, сохраняя при этом предварительный кэш в рабочем сервисе.

// Clear old caches
var clearOldCaches = function (event)
{
    event.waitUntil(
        caches.keys().then(function (cacheNames) {
            let validCacheSet = new Set(Object.values(workbox.core.cacheNames));
            return Promise.all(
                cacheNames
                .filter(function (cacheName) {
                    return !validCacheSet.has(cacheName);
                })
                .map(function (cacheName) {
                    return caches.delete(cacheName);
                })
            );
        })
    );
};

self.addEventListener("activate", function (event) {
    clearOldCaches(event);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...