2013-06-06 2 views
8

HttpRunTime 캐시에서 캐시 된 데이터를 볼 수있는 도구가 있습니까?
우리는 HttpRuntime Cache에 데이터를 캐싱하는 Asp.Net 응용 프로그램을 가지고 있습니다. 주어진 기본값은 60 초 였으나 나중에 5 분으로 변경되었습니다. 그러나 캐시 된 데이터는 5 분 전에 새로 고침됩니다. 밑에 무슨 일이 일어나고 있는지 모릅니다.

사용할 수있는 도구가 있습니까? 또는 만료 시간이있는 HttpRunTime 캐시 ...에 캐시 된 데이터를 볼 수있는 방법이 있습니까?
다음 코드는 캐시에 항목을 추가하는 데 사용됩니다.
System.Web.HttpRuntime.Cache에 캐시 된 데이터보기

public static void Add(string pName, object pValue) 
    { 
    int cacheExpiry= int.TryParse(System.Configuration.ConfigurationManager.AppSettings["CacheExpirationInSec"], out cacheExpiry)?cacheExpiry:60; 
    System.Web.HttpRuntime.Cache.Add(pName, pValue, null, DateTime.Now.AddSeconds(cacheExpiry), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.High, null); 
    } 


감사합니다.

답변

13

Cache 클래스는 IDictionaryEnumerator을 지원하여 캐시의 모든 키와 값을 열거합니다.

IDictionaryEnumerator enumerator = System.Web.HttpRuntime.Cache.GetEnumerator(); 
while (enumerator.MoveNext()) 
{ 
    string key = (string)enumerator.Key; 
    object value = enumerator.Value; 
    ... 
} 

그러나 만료 시간과 같은 메타 데이터에 액세스하는 공식적인 방법은 없다고 생각합니다.

3

Cache 클래스는 IDictionaryEnumerator을 지원하여 캐시의 모든 키와 값을 열거합니다. 아래 코드는 모든 키를 캐시에서 삭제하는 방법의 예입니다.

List<string> keys = new List<string>(); 

// retrieve application Cache enumerator 
IDictionaryEnumerator enumerator = System.Web.HttpRuntime.Cache.GetEnumerator(); 

// copy all keys that currently exist in Cache 
while (enumerator.MoveNext()) 
{ 
    keys.Add(enumerator.Key.ToString()); 
} 

// delete every key from cache 
for (int i = 0; i < keys.Count; i++) 
{ 
    HttpRuntime.Cache.Remove(keys[i]); 
}