Как применить кеширование во вспомогательном методе в asp.net mvc 2
У меня есть вспомогательный метод в моем приложении, и я применил к нему кеширование вывода
[OutputCache(Duration = 3600, VaryByParam = "DetailsId")]
public static Dictionary<string, object> GetData(int DetailsId)
{
}
но при каждом запросе эта функция вызывается.
Я хочу знать, могу ли я применить кэш вывода на вспомогательный метод? Если да, то как?
1 ответ
Решение
Ваш атрибут 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;
}