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

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

Вариант 1: Использовать Output Cache Substitution Feature

Атрибут OutputCache — это надстройка над механизмом кеширования старого доброго ASP.NET (во всяком случае для MVC версии 1.0). Поэтому все расширенные техники кеширования базируются также на старых asp.net`овских фишках.

Так, частичное кеширование работает за счет механизма Output Cache Substitution Feature (Подробнее можно прочитать в классическом опусе Tip/Trick: Implement "Donut Caching" with the ASP.NET 2.0 Output Cache Substitution Feature).

Были созданы MVC-обертки над механизмом Output Cache Substitution (Еще более классический опус: Donut Caching in ASP.NET MVC). Сейчас (версия MVC 1.0) эти обертки можно найти в ASP.NET MVC Futures. Расширения и хелперы позволяют писать конструкции вида:

<!-- Это кешируется (атрибут OutputCache применен к конроллеру) -->
<%= DateTime.Now %>

<!-- Это не кешируется -->
<%= Html.Substitute(c => DateTime.Now.ToString()) %>

Однако, такой подход имеет серьезный недостаток. Делегат, который возвращает динамические данные должен работать без контекста. То есть он не может обращаться к ViewData или TempData. В принципе это логично, потому что когда страница достается из кеша, никаких данных, передаваемых контроллером, она уже не имеет. Отсюда следует, что Html.Substitute() подходит только для вывода даты генерации страницы, но никак не для частичного кеширования. Есть способ подружить Html.Substitute() с TempData, но на бОльшее расчитывать не приходится.

Внимание! Вы собираетесь отправить информацию от имени анонимного пользователя.
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.