检测服务工作者驱逐

时间:2017-01-26 10:43:57

标签: service-worker progressive-web-apps

当浏览器检测到存储被批评为低时,它可以选择驱逐服务工作者的缓存,如W3C doc所述。

由于我的用户可以选择将他们的预订存储为离线访问,我想警告他们浏览器已将其删除。如何从页面中检测到我的Service Worker已丢失其缓存,从而相应地修改了UI?

通常,我依靠navigator.serviceWorker.register使我的UI适应我的服务工作者的存在与否。但在这种情况下,服务工作者仍然注册,但缓存不足。

onevicted事件做出反应是不够的,因为当用户甚至不浏览我的网站时,可能会发生缓存删除。

1 个答案:

答案 0 :(得分:2)

您可能想要Persistent Storage。该文章指的是以Chrome 52开头的Origin Trial,但自Chrome 55+默认启用以来,因此不再需要通过Origin Trial注册过程

假设您没有使用永久存储,我不知道当您的原始存储数据被驱逐时,服务工作者会触发任何事件。

可以通过window.caches从受控页面的上下文中检查缓存内容,但这仅在用户打开其中一个网页时才有效,并且您需要显式轮询以检查缓存内容,因为没有要监听缓存更新的事件。