有没有一种方法可以自动更新PWA缓存?

时间:2020-08-22 13:06:42

标签: android caching progressive-web-apps service-worker workbox

我最近使用工作箱将网站变成了PWA,并添加到了我在Android设备上的主屏幕上。但是,当我更新网站时,PWA不会在android上更新。

下面是代码manifest.json代码:

{"short_name":"SSPNG","name":"Security Shields PNG Limited","icons":[{"src":"/assets/img/fb-pro-pic0.png","type":"image/png","sizes":"512x512"},{"src":"/assets/img/fb-pro-pic0.png","type":"image/png","sizes":"512x512"}],"start_url":"/index.html","background_color":"#fff","theme_color":"#fff","display":"standalone","orientation":"portrait"}

这是服务人员的注册码:

<script>
    if ('serviceWorker' in navigator) {
      window.addEventListener('load', () => {
        navigator.serviceWorker.register('/sw.js')
          .then(registration => {
            console.log('Service Worker registered! ?');
          })
          .catch(err => {
            console.log('Registration failed ? ', err);
          });
      });
    }
  </script>

我正在寻找一种解决方案,用户无需手动清除浏览器应用程序存储中的缓存,并且PWA会自动更新。我想我使用了缓存后备方法,并且正在寻找一种替代方法,以强制更新现有PWA中的缓存。

1 个答案:

答案 0 :(得分:0)

恐怕你把两件事混为一谈了:

  • manifest.json 仅包含对图标文件、 start_urlscope 的引用。
  • service-worker.js 应包含带有路径的数组,指向您的 PWA 的 HTML、CSS、JavaScript 和其他资产文件。此外,service-worker.js 还应为 PWA 安装、激活/删除和获取事件定义事件侦听器/处理程序。

最后,最终触发 PWA 自动更新的是explained here