Safari的PWA限制为50 MB。没关系。我的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 MB的限制。我知道我可以清除“设置”>“ Safari”>下的“缓存”,依此类推,但目标是用户不应该自己执行此操作。这可能吗?除了注销服务工作者并删除缓存存储,还有其他解决方案吗?谢谢!
更新#1: atm cache.delete
don't work for Safari on iOS。重新启动浏览器后,Mac上的Safari可以识别它。