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

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

Для кеширования в ASP.NET MVC служит атрибут [OutputCache], который применяется к методу или самому классу котроллера:

public class HomeController : Controller
{
    [OutputCache(Duration=10)]
    public ActionResult Index()
    {
        return View();
    }
}

Параметры атрибута:

Duration — время, в течении которого возвращается кешированный результат вместо обычного;

VaryByParam — позволяет указать аргумент action-метода, для каждого значения которого нужно создавать собственный кеш. Например при такой реализации:

[OutputCache(Duration=10)]
public ActionResult Details(long id){
    // Action logic
}

результат, возвращаемый методом, будет кешироваться один раз для всех возможных вариантов аргумента id. Чтобы предотвратить такое поведение используется параметр VaryByParam:

[OutputCache(Duration=10, VaryByParam="id")]
public ActionResult Details(long id){
    // Action logic
}

Location — позволяет указать место хранения кеша. Возможные значения:

  • Any — любое из возможных мест (значение по умолчанию)
  • Client — кеш хранится в браузере клиента
  • Downstream — кеш может быть сохранен в любом HTTP 1.1 cache-совместимом устройстве, кроме основного сервера. Сюда могут включаться прокси-сервера и т.п.
  • Server — кеш сохраняется на том же сервере, где был сформирован ответ для клиента;
  • None — кеш не сохраняется;
  • ServerAndClient — кеш может сохраняться или на самом сервере или в браузере;

CacheProfile — задает имя секции конфигурации с настройками кеша. Позволяет перенести все настройки из самого атрибута в файл Web.config:

<caching>
<outputCacheSettings>
    <outputCacheProfiles>
        <add name="HomePageCacheProfile" duration="3600" varyByParam="none"/>
    </outputCacheProfiles>
</outputCacheSettings>
</caching>

public class HomeController : Controller
{
    [OutputCache(CacheProfile="HomePageCacheProfile")]
    public ActionResult Index()
    {
        // Action logic
    }
}
Внимание! Вы собираетесь отправить информацию от имени анонимного пользователя.
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.