[英]Avoid angularJS partial views to be cached in IE
我正在開發也具有一些angularJS的ASP.NET MVC應用程序。 我有一個主頁,其中包含不同的選項卡,當您單擊它們時,它們會加載一個角度局部視圖。 這是主頁的外觀:
{ ... }
<div class="widget-div" ng-controller="mainController">
<div class="widget-body">
<div class="tabs-left">
<ul id="demo-pill-nav" class="nav nav-tabs tabs-left" style="width: 160px">
<li ng-class="getMenuClass('/search')">
<a href="javascript:void(0);" ng-click="selectPage('search')">Search</a>
</li>
<li ng-class="getMenuClass('/addressVerification')">
<a href="javascript:void(0);" ng-click="selectPage('addressVerification')">Address Verification</a>
</li>
<li ng-class="getMenuClass('/dashboard')">
<a href="javascript:void(0);" ng-click="selectPage('dashboard')">Dashboard</a>
</li>
<li ng-class="getMenuClass('/editProfile')">
<a href="javascript:void(0);" ng-click="selectPage('editProfile')">Update Profile</a>
</li>
</ul>
<div class="tab-content">
<div class="active tab-pane">
<ng:view />
</div>
</div>
</div>
</div>
</div>
{ ... }
在主控制器中,selectPage方法如下所示:
$scope.selectPage = function (page) {
//not relevant code removed here
$location.path("/" + page);
};
當然,我已經定義了以下路線:
$routeProvider.when("/search", {
templateUrl: "/Scripts/app/views/search.html"
});
現在,我需要的是至少在開發過程中不緩存這些局部視圖。 為此,我使用了這里提供的方法:
myApp.run(function($rootScope, $templateCache) {
$rootScope.$on('$viewContentLoaded', function() {
$templateCache.removeAll();
});
});
除了Internet Explorer(Internet Explorer)外,這非常完美,即使在按Ctrl + F5時,Internet Explorer始終將加載緩存的版本。
另外,我嘗試在布局html中設置HTTP標頭,如下所示:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
但這沒有用。
所以我的問題是是否有任何方法可以避免這種行為。
我找到了我真正需要的解決方法。 向路由添加版本號,如下所示:
$routeProvider.when("/search", {
templateUrl: "/Scripts/app/views/search.html" + version
});
其中版本是一個字符串,如: ?v1.0.0
這樣,無論何時我進行更改,我都只需更改版本號,然后在單擊該頁面時,將再次下載部分視圖。
在web.config中使用以下標記禁用緩存
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.