Как применить кеширование во вспомогательном методе в asp.net mvc 2 - PullRequest
2 голосов
/ 21 декабря 2011

У меня есть вспомогательный метод в моем приложении, и я применил к нему кеширование вывода

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

}

, но при каждом запросе эта функция вызывается.

Я хочу знать, могу ли я применить кэш вывода для вспомогательного метода?Если да, то как?

1 Ответ

3 голосов
/ 21 декабря 2011

Ваш атрибут Output Cache должен быть в ActionResult, а не в статическом или нестатическом методе.

Например

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

}

Короче говоря, вы не можете использовать атрибут OutputCache, этот уровень использует что-то вроде объекта Cache:

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;
}
...