#asp.net-mvc #caching #httpruntime.cache
Вопрос:
Итак, я просматривал свою стандартную утилиту кэширования при подготовке к модульному тестированию контроллера и подумал: эй, это доступ к HttpRuntime.Кэш напрямую считается вредным в MVC?
Я оборачиваю кэш в прокси-класс, который реализует интерфейс, похожий на кэш (хотя и намного проще), чтобы я мог издеваться над ним во время тестов. Но мне интересно, сделано ли это уже для меня в новых рамках. Однако я ничего не могу найти.
Вот идея о том, как я это делаю:
public ActionResult DoStuffLol(guid id)
{
var model = CacheUtil.GetOrCreateAndStore(
"DoStuffLolModel",
() =>
{
/* construct model here; time consuming stuff */
return model;
});
return View("DoStuffLol", model);
}
Итак, изменились ли старые шаблоны доступа к кэшу? Существуют ли какие-либо лучшие шаблоны для кэширования результатов действий в MVC?
Ответ №1:
Добавьте атрибут OutputCache в действие контроллера, чтобы указать платформе кэшировать выходные данные для вас. Вы можете прочитать больше об этом атрибуте в блоге СкоттГу на ASP.NET Предварительный просмотр 4.
Комментарии:
1. Это только для кэширования всего действия контроллера. Для кэширования только фрагментов данных механика не изменилась в ASP.Net MVC.
Ответ №2:
Нет, но кэш изменился в 3.5. 3.5 включает оберточные классы, которые заставляют заглушать/издеваться над многими статическими классами, используемыми в asp.net полегче.
http://www.codethinked.com/post/2008/12/04/Using-SystemWebAbstractions-in-Your-WebForms-Apps.aspx