首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sw-precache中进行定期命中

如何在sw-precache中进行定期命中
EN

Stack Overflow用户
提问于 2018-02-10 01:31:43
回答 1查看 36关注 0票数 0

我一直在尝试在没有用户交互的情况下获取和更新服务工作者。我能够缓存页面,但只有在刷新时,我才能获取更新构建,这需要用户交互。关于如何做到这一点的任何帮助。

框架选择: Angular2,sw-precache(库)

这是我在顶层的脚本

代码语言:javascript
复制
<script>
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('/service-worker.js').then(function(registration) {
      console.log('Service Worker registered');
    }).catch(function(err) {
      console.log('Service Worker registration failed: ', err);
    });
  }
</script>
EN

回答 1

Stack Overflow用户

发布于 2018-02-14 02:34:11

每次在web服务器上托管的服务工作者文件中检测到更改时,sw-precache都会更新缓存。This Stack Overflow answer详细介绍了检查新服务工作者文件的频率,但基本思想是,检查通常发生在用户采取操作导航到您的服务工作者作用域下的新URL之后。

虽然有用于“定期后台同步”的proposals,允许你专门请求浏览器“在后台”检查更新,但没有任何用户交互,这还没有在任何地方实现。有一些关于电池寿命和电池资源使用的问题需要首先解决。

可以使用push notifications在没有用户交互的情况下“唤醒”服务工作者,并且当服务工作者通过push事件开始运行时,它还将检查更新。您应该显示一个可见的通知来响应push事件,因此,虽然您可以在没有用户交互的情况下触发一个通知,但您最终仍然需要通过通知告诉用户已发出刷新请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48711200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档