我正在使用AngularJS 1.5.8来构建我的webapp的客户端。我经常遇到问题,因为用户没有最新版本的webapp客户端。是否有一种简单的方法来执行热角应用程序重新加载,以便我的用户始终拥有最新版本? (我正在寻找websockets的替代品)
答案 0 :(得分:0)
您可以使用setInterval()通过ajax调用某个能够返回最新版本的REST端点,从客户端Web应用程序轮询服务器。如果该版本与您的“版本”变量不匹配,则强制重新加载应用程序。
答案 1 :(得分:0)
在您加载所有.js文件的index.html文件中,您可以在每次执行新构建时递增的URL中包含版本号。这将强制用户的浏览器从您的服务器重新加载库,因为URL不完全匹配,有效地破坏了缓存机制并阻止了旧版本的代码加载。
URL中的附加数据不会对应用程序产生任何影响。
<script src="js/app.js?v1.2.3"></script>
<script src="js/services.js?v1.2.3"></script>
<script src="js/filters.js?v1.2.3"></script>
<script src="js/directives.js?v1.2.3"></script>
<script src="js/components.js?v1.2.3"></script>
您可以在下一次构建中搜索/替换v1.2.3
到v1.2.4
。
如果您使用的是webpack或其他构建管道/自动化工具,您可以通过在文件名中包含库的哈希值,然后动态更新index.html文件中的URL来自动执行此操作。当您看到app.ad76c09743ef.js
等文件时,可能会生成该文件。这可确保即使源中的单个字符更改也会产生新的唯一哈希,从而阻止浏览器使用较旧的缓存值。
答案 2 :(得分:0)
我用来取得成功的图书馆是https://github.com/saintmac/angular-cache-buster
每次用户提出资源请求时,都会强制将最新版本发送到白名单。