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