Очистите CacheStorage в Safari программно, если он полностью - PullRequest
0 голосов
/ 15 февраля 2019

Safari имеет ограничение в 50 МБ для PWA.Это нормально.Мой PWA не достиг предела, НО он достигнет предела, когда придет время для обновления.Перед началом обновления я отменяю регистрацию ServiceWorker и удаляю CacheStorage.Вот две функции:

// delete/unregister the service worker
function serviceWorkerDelete() {
    navigator.serviceWorker.getRegistrations().then(function(registrations) {
        for (var r = 0; r < registrations.length; r++) {
            registrations[r].unregister();
            console.log(registrations[r]);
        }
        console.log("data delete and service worker unregister");
    });
}

// clear the CacheStorage
function cacheDelete() {
    caches.keys().then(function(keyList) {
        return Promise.all(keyList.map(function(key) {
            return caches.delete(key);
        }));
    })
}

Прекрасно работает в Chrome, Firefox и Edge, но не в Safari.Даже после перезагрузки Safari считает, что PWA превысил предел в 50 МБ.Я знаю, что могу очистить кэш в меню «Настройки»> «Safari» и т. Д., Но цель состоит в том, чтобы пользователь не делал это самостоятельно.Это как-то возможно?Есть ли другое решение помимо отмены регистрации сервисного работника и удаления кеша?Спасибо!

ОБНОВЛЕНИЕ № 1: атм cache.delete не работает для Safari на iOS .Safari на Mac распознает его после перезапуска браузера.

...