service-worker – 检测服务工作者驱逐

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

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

通常,我依靠navigator.serviceWorker.register调整我的UI以适应我的服务工作者的存在与否.但在这种情况下,服务工作者仍然注册,但缓存剥夺.

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

最佳答案 你可能想要请求
Persistent Storage.那篇文章指的是从Chrome 52开始的
Origin Trial,但它在Chrome 55中默认启用,因此不再需要通过Origin Trial注册过程.

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

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

点赞