检测单页应用程序上的应用程序版本更改

Ale*_*ode 29 javascript versioning angularjs single-page-application

今天提出了一个问题,我没有明确的答案.

假设我们连接并缩小所有资源文件(CSS和Javascript)并在"Master-Page"中声明它们.

在多页面应用程序中,如果CSS文件发生更改,它将在下一次整页加载时重新充值.

在单页面应用程序中,用户可以继续工作数天,并且永远不会为声明CSS文件的主页面充电.在发出Ctrl-F5之前,用户永远不会看到更改.

我敢肯定有人已经想到这一点,并有经验分享:)

对我来说,使用WebSockets不是一种选择.首先是因为它太过分,因为并非所有客户都支持这项技术.同样的原因也适用于所有WebSocket后备......因此我不会继续打我的服务器.

那么,任何人的想法?:)

顺便说一句,我们正在使用AngularJS,如果它可以帮助一个特定的解决方案.

谢谢!

Cét*_*tia 29

我遇到了同样的问题.我的解决方案已被注意到,可能无法回应您的标准:

当我打包我的前端应用程序和我的服务器应用程序时,我共享一个包含当前版本的前端应用程序的配置文件.

正面:我的路线中有75%隐含地更改了Web服务(路由更改解析).因此,每次我调用我的服务器时,我都会包含一个包含前端应用程序客户端版本的自定义HTTP标头(或GET/POST参数).

服务器端:我将前端应用版本(用户浏览器中的版本,上次用户刷新/加载SPA时加载的版本)与共享配置文件的前端版本进行比较:

  • 如果版本匹配:我什么都不做.
  • 如果版本不匹配,我发送自定义HTTP状态错误代码(例如418)

然后正面:我添加了一个响应拦截器拦截任何418错误代码并对整个应用程序进行强制刷新

而已.基本上,"检查"前端应用程序版本是否是最新版本的事件是路由更改(通过ajax调用WS).但你可以添加一些无限的$ interval,每隔5分钟左右调用一次专用的WS ...如果需要,我可以添加一些代码.

希望这可以帮助 ;)