今天在这里提出了一个问题,我没有明显的答案。
假设我们串联并缩小所有资源文件(CSS和Javascript),并在“母版页”中声明它们。
在多页应用程序上,如果CSS文件发生更改,它将在下一次整页加载时重新充电。
在单页应用程序上,用户可以继续工作数天,并且永远不会为声明CSS文件的主页充值。在发出Ctrl-F5之前,用户永远看不到更改。
我确定有人已经想到了这一点,并且有经验可以分享:)
对我来说,使用WebSockets不是一种选择。首先是因为它过于严格,其次是因为并非我的所有客户都支持该技术。相同的原因也适用于所有WebSocket的后备…因此,我不会继续打我的服务器。
那么,有人有什么想法吗?:)
顺便说一句,我们正在使用AngularJS,如果这可以帮助特定的解决方案。
谢谢!
我已经解决了同样的问题。我的解决方案有针对性,可能无法满足您的要求:
当我打包前端应用程序和服务器应用程序时,我共享一个包含前端应用程序当前版本的配置文件。
前端:我的路由更改中有75%隐式调用Web服务(路由更改解决)。因此,每次调用服务器时,我都会包含一个自定义HTTP标头(或GET / POST参数),其中包含前端应用程序的客户端版本。
服务器端:我将前端应用程序版本(用户浏览器中的版本,上次用户刷新/加载SPA时加载)与共享配置文件的前端应用程序版本进行比较:
然后是前端:我添加了一个响应拦截器,该拦截器拦截任何418错误代码并强制刷新整个应用程序
而已。基本上,“检查”前端应用程序版本是否最新的事件是路由更改(通过ajax调用WS)。但是您可以添加一些无限的$ interval,每5分钟左右调用一个专用WS …如果需要,我可以添加一些代码。
希望这可以帮助 ;)