我在AngularJS单页面应用程序上工作,该应用程序一旦加载(所有资源都从HTTP服务器获取),只访问REST后端以获取/发送数据。任务是如何确保用户始终使用最新版本的前端代码(.js
,.css
和.html
文件)当用户永远不会离开页面并且永远不会刷新浏览器
我认为有几种选择:
你知道其他方法吗?
答案 0 :(得分:1)
你也可以使用html5 application cache,这样每次有变化时,网站都会在第一次访问时更新自己,非常方便,比普通缓存更快。
答案 1 :(得分:1)
最近我在Agnularjs SPA中使用了第二种方法。我做的是
在我的angularjs APP的.htaccess和我的API服务器的.htaccess中,我添加了一个标题:
<IfModule mod_headers.c>
Header add appVersion "1.2"
</IfModule>
现在每当我从API服务器或前端(js,html,css,images)获取任何内容时,我都会收到此标题
现在在我的index.html中我定义了一个类似
的变量var frontendVersion = 1.2
我有一个http Response拦截器,它将查找每个响应,我做了类似的事情
myAPP.factory('httpRespInterceptor', function () {
return {
response: function (response) {
var appVersion = response.headers('appVersion')
if(appVersion == frontendVersion) {
console.log('ok')
} else if (appVersion != null) {
location.reload();
}
return response;
}
};
});
我添加了一个空检查,因为当我加载相同的视图两次时,我得到了空标题对象,在我的控制台中,我没有看到任何正在发送到服务器的请求。我有一个线索,为什么会发生这样的事情,如果有人可以发光,那将是非常感激的。)
所以每当我在代码中更改/更新应用程序时,我都会将我的标题appVersion更改为1.3,将index.html变量更改为var frontendVersion = 1.3
我希望这会有所帮助。如果有除此之外的最佳解决方案,请告诉我,
谢谢,