如何延迟对工作箱的重新验证调用StaleWhileRevalidate策略

时间:2019-01-22 10:04:50

标签: workbox

我们正在使用工作箱为我们的webApp实施ServiceWorker。 当前,我们使用workbox.strategies.staleWhileRevalidate作为首页路由。

我们的应用程序的网络使用模式是:主页,Javascript资源,API调用(按此顺序)。服务人员将使用过时的数据和Javascript资源来响应主页,并且API数据将通过网络获取。

我们观察到,从缓存为请求提供服务后,立即触发了对主页的重新验证调用。因此,这无助于减少网络资源的争用。有没有办法使用staleWhileRevalidate策略来延迟对请求的重新验证调用?目的是在页面加载完成之前减少网络争用。

1 个答案:

答案 0 :(得分:0)

没有办法延迟重新验证。从理论上讲,我们可以以较小的间隔添加对Promise包装的setTimeout()的调用,并确保将其包含在event.waitUntil()中,以防止服务人员同时终止,但老实说,这并不能保证不会发生争用,只是将争用推迟了一小段时间。

我认为将来更干净的方法是使用Priority Hints,并明确将重新验证请求标记为具有importance: 'low'。我已在this issue中将该用例添加到了一般情况下跟踪Workbox对“优先提示”的使用。