Имеет использование HttpRuntime.Кэш изменился в ASP.NET MVC?

#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