我将一堆带有特定前缀的项目添加到ASP.NET缓存中。
我希望能够遍历缓存并删除那些项目。
我尝试这样做的方式是这样的:
foreach (DictionaryEntry CachedItem in Cache)
{
string CacheKey = CachedItem.Key.ToString();
if(CacheKey.StartsWith(CACHE_PREFIX){
Cache.Remove(CacheKey);
}
}
我可以更有效地做到这一点吗?
我曾考虑过创建一个临时文件,并添加对文件的依赖项,然后才删除该文件。那是致命的吗?
最佳答案
在迭代集合时,您无法从集合中删除项目,因此您需要执行以下操作:
List<string> itemsToRemove = new List<string>();
IDictionaryEnumerator enumerator = Cache.GetEnumerator();
while (enumerator.MoveNext())
{
if (enumerator.Key.ToString().ToLower().StartsWith(prefix))
{
itemsToRemove.Add(enumerator.Key.ToString());
}
}
foreach (string itemToRemove in itemsToRemove)
{
Cache.Remove(itemToRemove);
}
这种方法很好,并且比缓存依赖项更快,更容易。
关于asp.net - 从缓存(ASP.NET)删除特定项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/704765/