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 распознает его после перезапуска браузера.