2017-08-02 63 views
0

我正在使用AngularJS 1.5.8构建我的web应用程序的客户端。我经常遇到问题,因为用户没有Web应用程序客户端的最新版本。有没有简单的方法来执行热角度的应用程序重新加载,以便我的用户始终拥有最新版本? (我正在寻找一个websockets的替代方案)AngularJS应用程序在生产中热重新加载

+0

可以只是做一些像Ajax-Pings,并在客户端创建一个弹出/警告? –

回答

0

您可以使用setInterval()通过对某个能够返回最新版本的REST端点执行ajax调用,从您的客户端Web应用程序中查询您的服务器。如果该版本与您的“版本”变量不匹配,则强制重新加载应用程序。

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.3v1.2.4上的下一个版本。

如果您使用的是类似webpack或其他构建管道/自动化工具的东西,可以通过在文件名中包含库的散列值,然后动态更新index.html中的URL来自动执行此操作文件。当你看到像app.ad76c09743ef.js这样的文件时,这可能是如何产生的。这确保了即使源代码中的单个字符更改也会导致一个新的,唯一的哈希,以防止浏览器使用较旧的缓存值。

相关问题