我正在构建MVC应用程序,并希望将缓存放在我的应用程序中。我已经阅读了有关缓存的内容,您需要将 [OutputCache(Duration = 60,VaryByParam =“none”)] 置于控制器方法之上,它将起作用。但是在我的情况下,我想缓存不是整个控制器方法,而是内部方法,它将从索引控制器调用,并将返回IEnumerable<SelectListItem>
和我希望缓存的结果。
但缓存仅适用于将导致视图结果的控制器方法,我还搜索了非视图方法的缓存,并找到了一些MVCDonutCaching并阅读this articles并通过安装尝试了这个也按照以下
[DonutOutputCache(Duration=60, VaryByParam="none")]
public IEnumerable<SelectListItem> GetRegionList()
{
Region region = new Region();
return region.GetRegionsList();
}
但是没有运气来实现我的目标!有谁在这里做过这种类型的缓存?那么请帮我实现这个目标。
先谢谢。
答案 0 :(得分:1)
我相信你的问题不在于mvc本身,而在于缓存模型数据。缓存控制器操作就像形成静态页面并将其保存在IIS缓存中。每次用户请求“Home / Index”(例如)时,IIS都会从缓存中获取格式良好的页面(html)而不执行任何代码。
您要做的是缓存模型数据。这是完全不同的事情,因为它与IIS和html页面形成无关。您可以使用以下现有解决方案: Unity应用程序块 - http://msdn.microsoft.com/en-us/library/ff649102.aspx 或者来自stackexchange的这篇文章:https://softwareengineering.stackexchange.com/questions/35709/recommendations-for-a-net-distributed-caching-framework