当浏览器检测到存储被批评为低时,它可以选择驱逐服务工作者的缓存,如W3C doc所述。
由于我的用户可以选择将他们的预订存储为离线访问,我想警告他们浏览器已将其删除。如何从页面中检测到我的Service Worker已丢失其缓存,从而相应地修改了UI?
通常,我依靠navigator.serviceWorker.register
使我的UI适应我的服务工作者的存在与否。但在这种情况下,服务工作者仍然注册,但缓存不足。
对onevicted
事件做出反应是不够的,因为当用户甚至不浏览我的网站时,可能会发生缓存删除。
答案 0 :(得分:2)
您可能想要Persistent Storage。该文章指的是以Chrome 52开头的Origin Trial,但自Chrome 55+默认启用以来,因此不再需要通过Origin Trial注册过程
假设您没有使用永久存储,我不知道当您的原始存储数据被驱逐时,服务工作者会触发任何事件。
可以通过window.caches
从受控页面的上下文中检查缓存内容,但这仅在用户打开其中一个网页时才有效,并且您需要显式轮询以检查缓存内容,因为没有要监听缓存更新的事件。