Для кеширования в 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
}
}