Мы развернули живой, свежий, шикарный сайт, используя предварительную версию 3, включая тщательное стресс-тестирование.
Кэширование вывода страниц стало нашим спасителем и позволило нам выполнить контрактные требования по производительности.
Мой вопрос заключается в том, есть ли разница между действием OutputCacheFilter
и кэшированием вывода страницы?
Является ли кэширование вывода действия более быстрым, чем кэширование вывода страницы?
Внутри OutputCacheAttribute (он же фильтр кэша вывода) использует тот же внутренний механизм, что и кэширование вывода страницы (он же директива @OutputCache).
Поэтому он не быстрее, чем кэширование вывода страницы. Однако в MVC вы не можете использовать кэширование вывода страницы с помощью директивы @OutputCache, поскольку мы выводим представление (оно же страница) после выполнения действия. Поэтому вы получите очень мало пользы.
С фильтром выходного кэша он поступает правильно и не выполняет код действия, если результат находится в выходном кэше. Надеюсь, это поможет. :)
Имейте в виду, что в настоящее время существует ошибка, если вы вызываете Html.RenderAction(...) для действия, которое помечено как кэшируемое. Вместо того, чтобы кэшироваться конкретное действие, кэшируется вся страница. Я уже сообщал об этом на codeplex, и, похоже, это известная проблема: Вызов <% HTML.RenderAction<...>(...); %> для Action с [OutputCache(...)] приводит к кэшированию всей страницы.