当我们部署应用程序的新版本时,我们的用户可能仍在使用旧的前端 Java 脚本代码,这可能会导致错误。
我们的应用程序是单页应用程序,因此人们不会经常刷新它,并且用户有时会将其保留一段时间。所以每当我们推送新代码时,这个问题确实很容易发生。
我们正在考虑是否可以设置一个带有刷新按钮的弹出窗口,这将迫使他们重新加载前端缓存的代码。
通常如何触发它?我可以想到很多方法来做到这一点,但也许有一个标准的方法?
最佳答案
您实际上有两个独立的问题。
- 客户端和服务器之间的 API 版本不匹配
- 加速新版本代码的发布。
API版本不匹配
通常,您需要使用版本化的 API。每个 API 请求都应该以某种方式指示该请求对应的版本。这通常在请求的路径中完成,这使得路由到不同的 API 服务器变得非常容易。例如:
http://api.example.com/1.0/foo/bar
您的 Web 服务器可以匹配 /1.0/
并路由到适合您的 API 的应用程序服务器。
这为您提供了一定的灵 active ,允许滚动发布过程,并且不会在每次发布时强制客户端重新加载。 (您可能有一天想要每天发布 50 次,而您的客户对此不会太高兴。除非您有特定原因,否则无需强制重新加载。)
最简单的方法是让新版本的 API 尽可能向后兼容。但是,重大变化确实发生了。发生这种情况时,请同时运行 API 服务器的两个实例。如果您有重大的底层数据结构更改,或其他一些巨大的更改阻止了这种情况,您将需要在启动新版本的同时停止旧版本,并强制重新加载。
新客户端代码发布
您必须根据您的应用和业务条件来决定是否需要在每次发布时重新加载。同样,有一天您可能希望一天发布 50 个版本,其中大部分是针对大多数客户永远不会看到的小问题。让用户知道有新版本可用并让他们在需要时重新加载是很常见的。如果确实有必要(由于严重的安全问题或重大的重大更改),您可以随时强制重新加载。
实现
如何执行此操作的具体细节取决于您,但一种简单的方法是提供一个可用的基本 JSON 文件,指示最新版本:
{
"apiVersion": "1.0.5"
"appVersion": "1.1.352"
}
更有创意的是,您可以让此文件指示是否需要终止特定版本,从而强制重新加载。
关于javascript - 每当 java 脚本过时时强制刷新客户端浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40987271/