如何帮助已经缓存index.html作为服务工作者一部分的“老\现有客户”,而不要求他们手动刷新

问题描述

我修复了我的SPA站点的服务工作者配置,现在不缓存index.html文件。 问题是我该如何处理已经有旧index.html文件作为服务工作者缓存一部分的匿名旧\现有访问者?

因为我不认识他们,所以我不能告诉他们清除缓存或进行手动刷新。他们不时打电话给我的办公室,我向他们解释该怎么做,但是我确信很多游客没有打电话给我,并且由于这个问题而不能使用我的新版本。

同样,自从我对服务人员配置进行修复后,访问我的网站的访客就没有任何问题。我的访问者遇到的问题是我的旧index.html在修复之前。

我正在使用Nginx和ReactJS。

解决方法

您需要对缓存的资产进行某种检查,以查看是否需要更新。

我会根据应用使用不同的技术。

一种方法是发出HEAD请求,并将上次更新时间与缓存的值进行比较。如果自从缓存以来已在服务器上对其进行了更新,我将其替换。

我还可能添加一些时间来使IndexedDB的生存价值与缓存的资产或数据相对应。时间到了,我触发更新。

没有一个答案能满足所有要求。缓存失效可能是一个复杂的主题,您需要尝试不同的技术,并在应用程序的使用案例中使用对数据或资产有效的方法。

还考虑如何处理脱机和身份验证等。查看更多层的复杂性。