OutputCache в Razor. Просмотр движка .cshtml страницы - PullRequest
6 голосов
/ 11 декабря 2010

Используя веб-формы ASP.NET MVC, мы можем поместить кэш вывода либо на уровне контроллера, либо на уровне представления. Как мы можем упомянуть «outputcache» на странице .cshtml?

Я нигде не нашел. Где взять синтаксис?

Ответы [ 4 ]

7 голосов
/ 11 декабря 2010

Что вы подразумеваете под "ASP.NET MVC Web Forms"? Если вы ссылаетесь на атрибут OutputCache в директиве Page, то есть ASP.NET Web Forms.

ASP.NET MVC имеет выходное кэширование на уровне действий контроллера:

    [OutputCache(Duration=10, VaryByParam="none")]
    public ActionResult Index()
    {
        return View();
    }

Это независимо от механизма просмотра (ASPX / Razor).

2 голосов
/ 12 декабря 2010

Обратитесь к последнему сообщению Мастера Гу на эту тему: Объявление MVC2

В частности, эта часть:

Улучшения кэширования вывода

Система кэширования вывода ASP.NET MVC 3 больше не требует от вас указывать Свойство VaryByParam при объявлении [OutputCache] атрибут на Метод действия контроллера. MVC3 сейчас автоматически меняет вывод в кеше записи, когда у вас есть явные параметры вашего метода действий - позволяет вам чисто включить вывод кэширование действий с использованием кода, такого как ниже:

alt text

В дополнение к поддержке полной страницы кэширование вывода, ASP.NET MVC 3 также поддерживает частичное кэширование страниц - что позволяет кэшировать область вывода и повторно использовать его по нескольким запросам или контроллеры. [OutputCache] поведение для частичного кэширования страниц было обновлено с RC2, так что суб-контент кэшированные записи варьируются в зависимости от входные параметры в отличие от URL структура запроса верхнего уровня - что делает сценарии кэширования как легче и мощнее, чем поведение в предыдущем RC.

Так что это многое улучшает для нас.

  1. Простое упоминание OutputCache в действии контроллера позаботится о сохранении результата этого конкретного действия в течение определенного периода времени. Кэш будет автоматически изменяться с помощью определенных параметров действия (что обычно является желаемым поведением).
  2. Он также будет прозрачно работать с дочерними действиями (вызываемыми через Html.Action (...))
2 голосов
/ 11 декабря 2010

Используя веб-формы ASP.NET MVC, вы можете поместить кэш вывода на уровень представления, но это не будет иметь эффекта.Это там, потому что это наследие от классического ASP.NET.В ASP.NET MVC кэш вывода всегда должен быть помещен в действие контроллера.

Поскольку помещение значений кэша в представление не имеет смысла во вновь представленном движке представления Razor, такой возможности нет.Вы должны всегда помещать этот атрибут в действие контроллера.

1 голос
/ 25 января 2013

Звучит так, как будто другие ответили на главный вопрос: Не Не настраивайте кэширование страниц в файле page / cshtml в MVC3 +, используйте метод Action в контроллере.

Однако для более сложных сценариев вы можете получить доступ к объекту WebCache через синтаксис Razor.

Вот некоторые из этих сценариев: старый Донат / Донат (или Донат / Даунут) кеширование. Направленная на MVC3 нить здесь Переполнение стека .

Также найден пакет NuGet MvcDonutCaching, упомянутый Денис Хьювелл , который решает проблему для 3 и 4 - но я не проверял его.

...