ASP.NET清除缓存

时间:2009-11-25 09:27:28

标签: asp.net caching

如果使用

在HttpHandler中缓存页面
_context.Response.Cache.SetCacheability(HttpCacheability.Public);
_context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(180));

是否可以从缓存中清除某个页面?

3 个答案:

答案 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]);
    }
}

修改第二个循环以在删除之前检查密钥的值应该是微不足道的。

希望这有帮助。