我有一个部署在Firebase Hosting上的Flutter web应用程序。部署新版本时,Safari即使在刷新时也不会拾取新版本。我认为这是由于安装了服务工作者,他们将提供旧的内容。如何绕过这个问题?我知道硬刷新可以解决问题,但这不是一个好的解决方案,因为我们不能指望用户知道要这么做。
一种需要客户端代码的替代方案是,我跟踪当前加载的应用程序的当前版本,如果发生更改,当我检测到新版本可用时,我会创建"新版本可用"屏幕,并从客户端执行location.reload(true(调用,以绕过缓存并安装新的服务工作者。
还有其他选择吗?
在最近的版本中,他们在每次构建时都会将一个随机哈希附加到flutter_service_worker.js
URL,这样它就可以中断缓存并正确刷新。