从Android API清除服务工作者缓存

时间:2016-08-29 09:01:18

标签: android service-worker

我们有一个带有一些网页浏览功能的原生andorid应用。我们在Android网页浏览中使用服务工作者功能。

http://www.html5rocks.com/en/tutorials/service-worker/introduction/

有没有办法从Android API中清除服务工作者缓存?我们希望在用户从Android应用程序注销时明确清除缓存。

1 个答案:

答案 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和其他特定于站点的存储仍将保留。