关闭浏览器后,是否可以在Angular PWA中更新服务工作者?

时间:2019-03-11 07:32:48

标签: angular service-worker angular7 progressive-web-apps angular-service-worker

我有一个Angular PWA应用程序,该应用程序每15秒检查一次Service Worker更新,这意味着该应用程序查看缓存的静态文件是否仍然有效。如果有新的部署,服务人员将以静默方式更新缓存,并让用户知道有可用的更新,以及是否要刷新。

如果用户当前正在使用该应用程序,则此方案还可以。但是,假设用户未使用该应用程序。即使关闭浏览器也可以更新缓存吗?我认为这可能是可行的,因为一旦注册了服务工作者,便可以侦听推送通知,那么是否也可以自动更新应用程序的缓存?

2 个答案:

答案 0 :(得分:1)

通常,当浏览器关闭(未运行)时,您的应用无法执行任何操作including get push notifications。我认为Android是一个例外,因为设备会处理推送通知,然后将启动浏览器来处理通知。

当浏览器正在运行但您的站点没有打开任何选项卡/窗口时,服务人员无法触发任何活动。有一些proposals用于API,但是它们都存在很多隐私问题,而且还没有解决。

理论上,您可以发送push notifications to wake up服务工作人员并检查更新,但是有一些配额限制了总推送次数。大多数(如果不是全部)浏览器也会向用户require that web pushes show a notification web sockets阻止静默用户跟踪。

还请注意,每15秒检查一次更新非常激进。您应确保不会浪费设备资源和消耗带宽。您可能需要研究server sent events或{{3}}。这将使您的所有服务器将更新通知给活动的客户端。

关于保持您的内容尽可能最新,我建议尝试为热交换代码设计您的应用程序。因此,您可以加载网站的缓存版本,检查更新并在活动客户端中无缝开始运行更新的代码,而无需重新加载。

答案 1 :(得分:0)

如果要更新服务人员,则应使用其更新功能-来自“ @ angular / service-worker”的SwUpdate。

订阅SwUpdate会在有可用更新时通知您,使您可以决定如何处理。

请找到更多信息here