2013-06-06 75 views
8

是否有任何工具可用於查看HttpRunTime緩存中的緩存數據?
我們有一個將數據緩存到HttpRuntime緩存中的Asp.Net應用程序。給定的默認值是60秒,但後來更改爲5分鐘。但覺得緩存的數據在5分鐘之前刷新。不知道底下發生了什麼。

是否有任何工具可用,或者我們如何看到在HttpRunTime Cache ....中緩存的數據以及過期時間...?
以下代碼用於將項目添加到緩存。
查看在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]); 
}