我有一个单页应用程序,需要客户端使用最新版本。缓存是激进的,因此等待它们失效是不可行的。
有没有办法告诉客户端查看资源(比如说 build.txt 之类的东西),如果该资源包含的内部版本号大于当前加载的内部版本号,则使缓存无效并刷新?
最佳答案
由于这个问题已被标记为 progressive-web-apps
我将假设它正在安装一个 service-worker,它正在积极缓存资源。
This post通过为 PWA 显示“可用的新版本”弹出窗口来运行 - 即使这不是您想要的特定行为,它也解释了很多关于服务工作人员如何更新的信息。
This question/answer还讨论了服务工作人员检查更新的频率。
This question/answer回顾始终使用 skipWaiting
让客户端立即保持最新状态的优缺点。
编辑:如果您只是处理常规的 HTTP 缓存,请尝试使用 location.reload(true)
(重新加载 forcedReload
标志集)当您检测到服务器上有更新的版本时。过去,我通过在构建/发布时将发布号放入 js 代码中,并让服务器将其发布号作为 header 添加到每个响应中来完成此操作。 ajax 调用后的值的简单比较可以确认 ui 和服务器版本号是否匹配,并在不匹配时采取措施。
关于javascript - 如果有新版本,我如何强制 SPA 客户端硬刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56370212/