Изменилось ли использование HttpRuntime.Cache в ASP.NET MVC? - PullRequest
1 голос
/ 07 октября 2008

Итак, я просматривал свою стандартную утилиту кэширования, когда готовился к модульному тестированию контроллера, и подумал: эй, доступ к HttpRuntime.Cache напрямую считается вредным в MVC?

Я обертываю кеш в прокси-классе, который реализует интерфейс, похожий на кеш (хотя и намного проще), чтобы я мог его высмеивать во время тестов. Но мне интересно, если это уже сделано для меня в новых рамках. Однако я ничего не могу найти.

Вот идея, как мне это сделать:

public ActionResult DoStuffLol(guid id)
{
  var model = CacheUtil.GetOrCreateAndStore(
                  "DoStuffLolModel",
                  () =>
                  {
                    /* construct model here; time consuming stuff */
                    return model;
                  });
  return View("DoStuffLol", model);
}

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

Ответы [ 2 ]

1 голос
/ 07 октября 2008

Добавьте атрибут OutputCache к вашему действию контроллера, чтобы сказать платформе, чтобы она кэшировала вывод для вас. Подробнее об этом атрибуте можно прочитать в блоге ScottGu в ASP.NET Preview 4 .

Однако не объединяйте это с атрибутом Authorize .

0 голосов
/ 04 декабря 2008

Нет, но кеш изменился в 3.5. 3.5 включает классы-обертки, которые упрощают работу с заглушками / насмешками над многими статическими классами, используемыми в asp.net.

http://www.codethinked.com/post/2008/12/04/Using-SystemWebAbstractions-in-Your-WebForms-Apps.aspx

...