asp.net-mvc - 如何在 asp.net mvc 2 的辅助方法中应用缓存

标签 asp.net-mvc asp.net-mvc-2 outputcache

我的应用程序中有一个辅助方法,并且我已对其应用了输出缓存

[OutputCache(Duration = 3600, VaryByParam = "DetailsId")]
public static Dictionary<string, object> GetData(int DetailsId)
{

}

但每次请求时都会调用此函数。

我想知道我可以在 Helper 方法上应用输出缓存吗?如果是的话怎么办?

最佳答案

您的输出缓存属性需要位于 ActionResult 上,而不是位于静态或非静态方法上。

例如

[OutputCache(Duration = 3600, VaryByParam = "DetailsId")]
public ViewResult GetData(int DetailsId)
{

}

简而言之,您不能使用此级别的 OutputCache 属性,而是使用类似于缓存对象的内容:

public Dictionary<string,object> GetData(int DetailsId)
{
 //Try to get object from cache
var model = (Dictionary<string,object>)HttpContextBase.Current.Cache["Data_"+DetailsId];
if(model==null)
{
HttpContextBase.Current.Cache["Data_"+DetailsId] = model_from_store;
return model_from_store;
}
else
return model;
}

关于asp.net-mvc - 如何在 asp.net mvc 2 的辅助方法中应用缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8588555/

相关文章:

asp.net-mvc - 我怎样才能在 asp.net mvc 中做一个消息框?

c# - 发布后的应用程序在几分钟后停止更新更新面板

azure - Azure 中具有 MVC 和 ASP.NET Core 的 Outputcache IIS

c# - MVC 6 标签助手 Intellisense?

c# - 数据未插入到 Azure Sql 数据库中

asp.net - 如何配置事件目录的连接字符串

c# - IIS7 ASP.NET MVC 2 Assets 缓存模块不工作

asp.net-mvc-2 - ASP.Net MVC2 中 Controller 和存储库之间的职责范围

asp.net-mvc - MVC:如何将文件上传和其他表单字段发布到一个操作

azure - 为什么指向 Azure 共享缓存的 Web outputCache 配置部分会减慢每个请求的速度?