我们有一个带有一些网页浏览功能的原生andorid应用。我们在Android网页浏览中使用服务工作者功能。
http://www.html5rocks.com/en/tutorials/service-worker/introduction/
有没有办法从Android API中清除服务工作者缓存?我们希望在用户从Android应用程序注销时明确清除缓存。
答案 0 :(得分:4)
我不是Android开发人员,但WebStorage#deleteAllData()
方法看起来可以实现您想要的效果。如果没有,这听起来像一个bug,我建议你通过任何用于Android框架错误的机制进行跟进。
或者,由于我是一名Web开发人员,因此这里有一种清除方法的JavaScript方法。请注意,您所称的“服务工作者缓存”实际上并不限于服务工作者; Cache Storage API在工作全局范围和window.caches
中都公开,因此它将直接在网页上下文中使用。因此,您可以运行直接从网页执行上下文中删除所有缓存的代码,而无需跳过箍来触发服务工作者:
caches.keys()
.then(cacheNames => Promise.all(cacheNames.map(cacheName => caches.delete(cacheName))))
.then(() => console.log('Everything was deleted!'))
.catch(error => console.warn('Something went wrong!', error));
与WebStorage#deleteAllData()
调用不同,JavaScript只会清除缓存存储API,因此普通的HTTP缓存以及Cookie和其他特定于站点的存储仍将保留。