我们正在使用工作箱为我们的webApp实施ServiceWorker。
当前,我们使用workbox.strategies.staleWhileRevalidate
作为首页路由。
我们的应用程序的网络使用模式是:主页,Javascript资源,API调用(按此顺序)。服务人员将使用过时的数据和Javascript资源来响应主页,并且API数据将通过网络获取。
我们观察到,从缓存为请求提供服务后,立即触发了对主页的重新验证调用。因此,这无助于减少网络资源的争用。有没有办法使用staleWhileRevalidate策略来延迟对请求的重新验证调用?目的是在页面加载完成之前减少网络争用。
答案 0 :(得分:0)
没有办法延迟重新验证。从理论上讲,我们可以以较小的间隔添加对Promise包装的setTimeout()
的调用,并确保将其包含在event.waitUntil()
中,以防止服务人员同时终止,但老实说,这并不能保证不会发生争用,只是将争用推迟了一小段时间。
我认为将来更干净的方法是使用Priority Hints,并明确将重新验证请求标记为具有importance: 'low'
。我已在this issue中将该用例添加到了一般情况下跟踪Workbox对“优先提示”的使用。