2010-05-21 5 views
8

HttpContext의 Cache 컬렉션에있는 모든 항목의 만료를 강제하는 방법이나 방법이 있습니까? 이 같은모든 ASP.NET 캐시가 만료되도록 강제

+2

ASP.Net 서버를 다시 시작하십시오. – Earlz

+0

그리고 해당 공유 호스팅이 있다면? 내가 다시 시작할 수는 없어? – Rushino

답변

16

시도 뭔가 :

var enumerator = HttpRuntime.Cache.GetEnumerator(); 
Dictionary<string, object> cacheItems = new Dictionary<string, object>(); 

while (enumerator.MoveNext()) 
    cacheItems.Add(enumerator.Key.ToString(), enumerator.Value); 

foreach (string key in cacheItems.Keys) 
    HttpRuntime.Cache.Remove(key); 
+0

그래,이 작동합니다. 전에이 접근법을 사용했습니다. – Pandincus

+1

사전을 사용하여 캐시 항목을 보유하는 이유는 무엇입니까? 키만 누르고 있으면됩니다. List 이 처리해 줄 것 같습니다. –

+0

좋은 지적. 열거 자의 foreach 중에 제거 할 수 없으므로이 데이터를 유지해야한다고 생각했습니다. – Tejs

0

무엇 만료 캐시를 업데이트하는 방법에 대한?

protected void btnClearCache_Click(object sender, EventArgs e) 
{ 

    var enumerator = HttpRuntime.Cache.GetEnumerator(); 

    while (enumerator.MoveNext()) 
     HttpRuntime.Cache.Insert(enumerator.Key.ToString(), enumerator.Value, 
      null, DateTime.Now , Cache.NoSlidingExpiration); 
} 
관련 문제