【问题标题】:How do I make periodic hits in sw-precache如何在 sw-precache 中进行定期命中
【发布时间】:2018-02-09 17:31:43
【问题描述】:

我一直在尝试在没有用户交互的情况下获取和更新服务人员。我能够缓存页面,但只有在刷新时我才能获取更新版本,这需要用户交互。关于如何完成的任何帮助。

框架选择:Angular2、sw-precache(Library)

这是我的顶级脚本

<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>

【问题讨论】:

    标签: javascript service-worker sw-precache


    【解决方案1】:

    sw-precache 将在每次检测到您在 Web 服务器上托管的 Service Worker 文件中发生更改时更新缓存。 This Stack Overflow answer 详细说明了这些对新 Service Worker 文件的检查的频率,但基本思想是,它们通常发生在用户采取行动导航到您的 Service Worker 范围内的新 URL 之后。

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

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

    【讨论】:

    • 感谢您的关注,不久前我以某种方式想通并解决了我的问题。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2018-05-26
    相关资源
    最近更新 更多