gpt4 book ai didi

c# - 在 MVC 中缓存列表集合

转载 作者:行者123 更新时间:2023-11-30 12:29:25 25 4
gpt4 key购买 nike

我正在处理一个搜索页面,其中包含多个具有不同数据库值的下拉菜单。我开始研究缓存技术并遇到了一些可能的解决方案

  1. 输出缓存
  2. HttpContext.Cache

当我深入了解不同类型的缓存时,我记得该应用程序还提供了指标页面,这些页面可以使用搜索页面中的相同下拉菜单。现在我想要一个站点范围的解决方案,而不是搜索页面解决方案。

我在这两种情况下检索不同值的方式几乎相同。我有一个带有各种“可用”字段的 ViewModel。这些字段填充在构造函数中。

public class SearchViewModel
{
public AvailableSites {set;get;}

public SearchViewModel()
{
AvailableSites = db.SomeTable.Select(s => s.Site).Distinct();
}
}

当我的模型以这种方式设置时,每次用户点击搜索或指标页面时,应用程序都必须点击数据库以填充下拉菜单。缓存将大大减少它对数据库和网络的负载。

似乎 OutputCache 只适用于 Controller 操作,所以这似乎是不可能的。

distinct 查询的结果很少会改变。这是我想使用 HttpContext 缓存的东西吗?在这种情况下哪种类型的缓存最有效?

此外,将其集成到我的 MetricBase(每个指标 VM 都继承自此)和 SearchViewModel 的最佳方法是什么?对于这种情况,继承似乎有点矫枉过正。我是否只包含这样的类 private AvailableValue Values {set;get;} 并通过 Values.AvailableSites 访问它们?

最佳答案

System.Runtime.Caching.MemoryCache 提供强大的内存缓存(参见 http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache(v=vs.100).aspx)。

据我了解,它是基于System.Web.Caching的,但不依赖于System.Web程序集,所以你可以把它放在你的业务层。

这篇博文应该可以帮助您实现:http://deanhume.com/Home/BlogPost/object-caching----net-4/37

关于c# - 在 MVC 中缓存列表集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18625405/

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