由于我们的“敏捷”环境,我们有一个Angular项目,模板已经改变了很多次。由于html文件类型,浏览器似乎强烈缓存模板。这意味着当业务在更新后进入我们的开发站点时,他们偶尔会看到旧的模板。我们如何确保在对模板进行更改时,用户下载新模板而不是从缓存中加载?如何在服务器上更改时缓存AngularJS模板?
3
A
回答
1
我们使用Jade并防止缓存,我们有一个基于附加到我们的JS/CSS包含(style.css?v = 2012881)结尾的时间的变量。由于我们已经通过这个变量的“appVersion”,我选择了使用角模块,并不断暴露变量:
script.
angular.module('appVersion',[]).constant('appVersion',#{curDate});
在我的主角度模块我有:
.config(['$httpProvider','appVersion',function($httpProvider,appVersion){
$httpProvider.interceptors.push(function() {
return {
'request': function(config) {
if(!config.cached && config.url.indexOf('.html') > -1){
if(config.url.indexOf("?") > -1){
config.url = config.url.replace("?","?v="+appVersion+"&");
}
else{
config.url += "?v="+appVersion;
}
}
return config;
}
};
});
}])
由于模板使用$ http.get加载,我添加了一个拦截器,用于检测请求是否为模板请求,如果是,则将appVersion附加到请求。这样我们对CSS,JS和HTML有相同的版本。
1
使用类似grunt-filerev(https://github.com/yeoman/grunt-filerev)的工具进行静态修订。他们基本上添加了一个文件内容哈希,所以缓存变得不可能。
相关问题
- 1. 服务人员:如何更新服务器上的文件更改缓存?
- 2. 缓存服务器响应(AngularJS,延期)
- 3. angularjs模式更改模板?
- 4. 在Redis服务器上更改时区
- 5. 仅保存服务器上已更改的对象:Restful service + angularjs
- 6. 服务器上的ASP.NET缓存控制更改
- 7. AngularJs的服务器端渲染模板
- 8. 仅在活动服务器上存在Django TemplateSyntaxError(存在模板)
- 9. 如何强制Google更新其服务器上的KML缓存?
- 10. angularjs模板变量不能在服务器上工作
- 11. 如何更改MySQL服务器时区?
- 12. 如何更改服务器时间MT4
- 13. 如何更改服务器时间?
- 14. 如何更改php服务器时区?
- 15. Drupal 7服务器或缓存问题?不更新CSS更改
- 16. breezejs更新缓存中的服务器更改
- 17. 更新缓存模板
- 18. AngularJS - 服务更改控制器数据
- 19. 在服务器上呈现jQuery模板
- 20. 当我使用3个Web服务器时,如何管理存储在Web服务器上的缓存?
- 21. 在arcmap中发布服务时,如何更改默认缓存目录?
- 22. 保存到Ember服务器时更改模型的JSON根
- 23. 如何判断缓存项目在哪个服务器上?
- 24. 如何在asp.net mvc 4中的服务器上缓存数据?
- 25. PHP脚本如何在服务器上缓存(?)?
- 26. 如何防止在IIS7服务器上缓存.kml文件?
- 27. C- HTTP Web服务器:如何缓存
- 28. 如何在使用Memcached服务器时清除Magento缓存
- 29. 当Angularjs中的模型更改时,模板未更新
- 30. AngularJS Bootstrap模式 - 更改模板onclick()?