在 Safari 上更新 ServiceWorker 而无需重新加载页面
Update ServiceWorker without page reload on Safari
我希望我的 PWA 在 运行 时定期自我更新,而不是等待用户刷新页面(例如,在 iOS 12 上,实际上很难触发页面重新加载一个 PWA)。
我知道有ServiceWorkerRegistration.update()方法,但Safari不支持。
那么,是否有任何解决方法可以让我的 ServiceWorker 在 iOS 上无需重新加载页面就可以自我更新?
附加信息:
目前我定期轮询 version.json
文件,我在其中放置了当前应用程序的版本,比较它,并强制重新加载页面。它工作正常,但需要重新加载两个页面才能获得新版本(此 + 在激活事件后加载新应用程序的资产)。
如果您需要更多上下文,这是我当前的解决方案:https://github.com/dimaip/calendar/blob/master/app/serviceWorker.js#L31
ServiceWorkerRegistration.update()
所有支持 service worker 的浏览器都支持,应该可以完成你想要的。
如果您想亲自确认 Safari 是否支持它,请尝试 运行ning
reg = await navigator.serviceWorker.ready
reg.update()
在 Safari 的 JS 控制台中,打开网络面板。在您 运行 之后,您应该会看到为服务人员发出的请求。
我希望我的 PWA 在 运行 时定期自我更新,而不是等待用户刷新页面(例如,在 iOS 12 上,实际上很难触发页面重新加载一个 PWA)。
我知道有ServiceWorkerRegistration.update()方法,但Safari不支持。
那么,是否有任何解决方法可以让我的 ServiceWorker 在 iOS 上无需重新加载页面就可以自我更新?
附加信息:
目前我定期轮询 version.json
文件,我在其中放置了当前应用程序的版本,比较它,并强制重新加载页面。它工作正常,但需要重新加载两个页面才能获得新版本(此 + 在激活事件后加载新应用程序的资产)。
如果您需要更多上下文,这是我当前的解决方案:https://github.com/dimaip/calendar/blob/master/app/serviceWorker.js#L31
ServiceWorkerRegistration.update()
所有支持 service worker 的浏览器都支持,应该可以完成你想要的。
如果您想亲自确认 Safari 是否支持它,请尝试 运行ning
reg = await navigator.serviceWorker.ready
reg.update()
在 Safari 的 JS 控制台中,打开网络面板。在您 运行 之后,您应该会看到为服务人员发出的请求。