如何强制工作箱更新缓存中的文件?

时间:2019-06-12 04:36:52

标签: javascript progressive-web-apps

我将Workbox配置为使用“ staleWhileRevalidate”策略缓存图像:

workbox.routing.registerRoute(
      new RegExp('\.(?:png|gif|jpg|jpeg|webp|svg)'),
      workbox.strategies.staleWhileRevalidate({
        cacheName: 'image_cache'
      })
    );

现在,尽管在大多数情况下可以正常工作,但在用户更新其头像时会出现问题。我的服务器通过以下方式更新用户的头像:

  1. 新的头像图片将上传到服务器,

  2. 服务器将图像保存到同一路径并覆盖先前的用户头像

  3. 服务器技术成功更新头像的客户端

我在Java脚本中执行了以下操作来处理头像更新:

update_avatar().then(()=>{
  window.location.reload(true)
})

在我的本地测试中不运行Workbox的情况下,此方法工作正常。但是使用Workbox时,因为它将使用缓存的图像,所以当用户更新其头像时,它将无法显示最新的头像。用户需要手动刷新页面两次才能显示较新的头像,这很烦人。

我猜最简单的方法是在服务器端将图像保存到新路径,但是在客户端有很好的解决方案,因此我不必更改服务器结构。

0 个答案:

没有答案