如果使用
在HttpHandler中缓存页面_context.Response.Cache.SetCacheability(HttpCacheability.Public);
_context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(180));
是否可以从缓存中清除某个页面?
答案 0 :(得分:5)
是否可以清除某个页面 从缓存?
是:
HttpResponse.RemoveOutputCacheItem("/pages/default.aspx");
您还可以使用缓存依赖项从缓存中删除页面:
this.Response.AddCacheItemDependency("key");
进行该调用后,如果您修改Cache["key"]
,则会导致该页面从缓存中删除。
如果它有帮助,我会在我的书中详细介绍缓存:Ultra-Fast ASP.NET。
答案 1 :(得分:4)
更简单的一个......
public static void ClearCache()
{
Cache cache = HttpRuntime.Cache;
IDictionaryEnumerator dictionaryEnumerators = cache.GetEnumerator();
foreach (string key in (IEnumerable<string>) dictionaryEnumerators.Key)
{
cache.Remove(key);
}
}
答案 2 :(得分:2)
以下代码将从缓存中删除所有密钥:
public void ClearApplicationCache(){
List<string> keys = new List<string>();
// retrieve application Cache enumerator
IDictionaryEnumerator enumerator = 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++) {
Cache.Remove(keys[i]);
}
}
修改第二个循环以在删除之前检查密钥的值应该是微不足道的。
希望这有帮助。