android - 从 Android 8 卸载 PWA 失败
问题描述
我开发了一个 PWA - jcoonrod.github.io - 当我卸载它时 - 清除浏览器缓存 - 然后尝试转到该页面并重新安装它,我只看到旧版本 - 缓存似乎比 PWA 寿命更长。如何在 android 上完全删除缓存的 PWA 文件?
解决方案
如果您想清除 service worker 存储,您可以通过您使用的浏览器的开发工具或代码:
// To unregister a service worker
navigator.serviceWorker.getRegistration()
.then(function(registration) {
if(registration){
registration.unregister()
.then(
function(success) {
// if success = true, unregister was successful
});
}
});
// To remove the SW storage
if ('caches' in window) {
caches.keys()
.then(function(keyList) {
return Promise.all(keyList.map(function(key) {
return caches.delete(key);
}));
})
}
caches.keys() 方法返回 CacheStorage 的键,这是一个接口,表示服务工作者可以访问的 Cache 对象的存储。
我写了一篇关于Service Workers和缓存策略以及如何清除存储数据的文章,你可以看看它。
推荐阅读
- node.js - 如何为 HTML 属性设置内容安全策略
- git - 使用 Azure AD 进行单点登录的 Gitlab 身份验证和授权
- java - Java“绘画”应用程序
- php - 如何只输出唯一的分类术语?
- django - ubuntu 20 上的 django apache2 设置用于内网访问
- python - pyenv:构建失败(Fedora 34 使用 python-build 20180424)
- javascript - PWA 启动画面和主屏幕上的图标出现在 iOS 设备中,但不在 Android 中(下面的 manifest.json 文件)
- algorithm - 在图像中找到非最大抑制的有效方法?
- python - 将 Dict 附加到 DataFrame 时,我得到“TypeError:'dict' object is not callable”
- python - 如何使用 Python 在现有 eml 文件中添加 pdf 附件?