Service Worker缓存脚本尝试加载旧数据

时间:2018-04-24 09:51:32

标签: javascript reactjs service-worker create-react-app

在我的项目中,我通过import()。然后。

异步加载json文件

有时,当新内容可用但尚未应用时,旧的缓存脚本包会尝试按旧名称加载json文件(因为捆绑会在每次构建时生成新的哈希名称)。但是这些文件不再可用了。

我看到很多应用都使用toast留言来通知用户有关更新的内容,以便他们可以刷新,但还有其他方法可以解决此问题吗?

1 个答案:

答案 0 :(得分:1)

没有。没有自动处理方法。

根据您的问题,我认为您的SW配置使用缓存优先策略。由于它是一个缓存优先策略,所描述的情况可能会发生并且有时会发生。

您有两种选择:

  1. 预处理所有JSON文件。这样,当旧的JS代码尝试异步获取JS文件时,它们将从SW的缓存中提供,而不是去网络。客户端获取整个应用程序的旧版本,包括JSON文件。

  2. 实现某种复杂(ish)自定义逻辑,尝试获取文件并在错误情况下与服务器通信,获取正确的文件名,然后再次尝试使用新文件名。您可以轻松生成列出所有当前JSON文件名的文件。

  3. 这两个选项都有不同的问题,根据应用程序的不同,它们可能会也可能不会。