由於我們的「敏捷」環境,我們有一個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()?