Добавить комментарий - CodeHelper

Добавить комментарий

Вариант 2: Частичный рендеринг и кеширование

Как известно, в ASP.NET MVC предусмотрена возможность частичного рендеринга страницы при помощи хелпера Html.RenderAction. Этот метод встраивает в страницу результат работы определенного action-метода. Сама концепция RenderAction, пришедшая из Ruby, является порочной (не зря из Ruby ее давно выкинули), потому что перемещает логику формирования результата из контроллера в вид. Однако, есть академически чистый аналог RenderAction — это SubController из MvcContrib.

Используя RenderAction или SubController в связке со стандартным механизмом кеширования (атрибут OutputCache). Можно организовать кеширование части страницы. Для этого нужно:

  • выделить динамическую часть в отдельный action,
  • пометить этот action атрибутом OutputCache
  • выводить результат на странице с помощью RenderAction или SubController.

К сожалению, такое решение не будет работать, потому что ASP.NET закеширует всю страницу целиком, а не ее часть. Это известная проблема, но в ASP.NET MVC 1.0 она не решена. Есть два способа борьбы с этим багом:

  • Использовать решение, описанное в статье Donut Hole Caching in ASP.NET MVC. Недостатки — работает только для WebFormsViewEngine и требует неочевидных изменений в видах.
  • Отказаться от стандартного атрибута OutputCache и использовать свой аналогичный атрибут. Например такой, как описан в статье Partial Output Caching in ASP.NET MVC)
Внимание! Вы собираетесь отправить информацию от имени анонимного пользователя.
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.