强制使所有ASP.NET缓存过期

9
有没有一种方法或者什么东西可以强制HttpContext的缓存集合中所有条目过期?

2
重新启动 ASP.Net 服务器 :) - Earlz
如果是共享主机呢?我想你无法重启它吧? - Rushino
2个回答

18

可以尝试像这样:

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);

1
为什么要使用字典来保存缓存项?你只需要保存键;似乎使用List<string>就可以解决问题了。 - Jesse C. Slicer
好观点。我刚想到需要保留那些数据,因为在枚举器的 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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接