gpt4 book ai didi

c# - 使用 ASP.NET 清除缓存的最有效方法

转载 作者:IT王子 更新时间:2023-10-29 04:42:52 31 4
gpt4 key购买 nike

我正在构建一个由 ASP.NET/Umbraco 驱动的网站,它是通过 Entity Framework 驱动的非常自定义的数据,我们不得不缓存相当多的数据查询(例如按关键字搜索),因为它是一个繁忙的网站。

但是当用户创建新的数据条目时,我需要清除所有缓存的查询(搜索等),以便新条目在结果中可用。

所以在我的创建、删除和更新方法中,我调用了以下方法:

public static void ClearCacheItems()
{
var enumerator = HttpContext.Current.Cache.GetEnumerator();

while (enumerator.MoveNext())
{
HttpContext.Current.Cache.Remove(enumerator.Key.ToString());
}
}

这真的很糟糕吗?我看不出我应该如何清除缓存的项目?

最佳答案

您使用的方法实际上是清除缓存的正确方法,您的代码中只有一个小“错误”。只要原始集合保持不变,枚举器就有效。因此,虽然代码可能大部分时间都有效,但在某些情况下可能会出现小错误。最好是使用下面的代码,其功能基本相同,但不直接使用枚举器。

List<string> keys = new List<string>();
IDictionaryEnumerator enumerator = Cache.GetEnumerator();

while (enumerator.MoveNext())
keys.Add(enumerator.Key.ToString());

for (int i = 0; i < keys.Count; i++)
Cache.Remove(keys[i]);

关于c# - 使用 ASP.NET 清除缓存的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6212676/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com