我正在开发一个搜索页面,其中包含多个具有不同数据库值的下拉列表。我开始研究缓存技术并遇到了一些可能的解决方案
当我更多地了解不同类型的缓存时,我记得此应用程序还提供了度量页面,可以使用搜索页面中的相同下拉菜单。现在,我想要一个站点范围的解决方案,而不是搜索页面解决方案。
我在两种情况下检索不同值的方式几乎相同。我有一个带有各种“可用”字段的ViewModel。这些字段填充在构造函数中。
public class SearchViewModel
{
public AvailableSites {set;get;}
public SearchViewModel()
{
AvailableSites = db.SomeTable.Select(s => s.Site).Distinct();
}
}
当我的模型以这种方式设置时,每次用户点击搜索或指标页面时,应用程序必须点击数据库以填充下拉菜单。缓存将大大减少它对数据库和网络的负载。
似乎OutputCache仅适用于控制器操作,因此这似乎是不可能的。
不同查询的结果很少会发生变化。这是我想用HttpContext缓存的东西吗?在这种情况下,哪种类型的缓存最有效?
此外,将此集成到我的MetricBase(每个指标VM是否继承自此)和SearchViewModel的最佳方法是什么?对于这种情况,继承似乎有些过分。我是否只需将此类列为private AvailableValue Values {set;get;}
并通过Values.AvailableSites
访问它们?
答案 0 :(得分:2)
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