Существует несколько способов использования ASP.Net MVC-ответа/вывода кэширования. В самом простой можно кэшировать простые страницы, которая одинакова для всех:Как работает SetVaryByCustom?
[OutputCache(Duration=24*3600)] // cache 1 day
public ViewResult Index() ...
Вы можете варьироваться в зависимости от конкретного Params, вы можете бюст кеша пользовательского ключом. Во всех этих случаях декларативный OutputCacheAttribute
используется для определения того, должна ли страница просто служить из кеша. Если он работает от кеша, действие не срабатывает - время CPU сохраняется.
Итак, предположим, что действие принимает идентификатор, то есть его содержимое меняет id на id. Предположим, вы хотите сбросить кеш для определенных идентификаторов, когда их базовые данные меняются. MSDN говорит, чтобы установить VaryByCustom внутри действий, а не декларативно в OutputCacheAttribute
:
Response.Cache.SetVaryByCustom
Как:
[OutputCache(Duration=24*3600, VaryByParam="id")]
public async Task<ViewResult> Thing(string id)
{
Response.Cache.SetVaryByCustom("thing-" + id);
// Some big load of work we'd like to avoid when a ton of visitors hit
// the server goes here.
Так что ... в любом случае, пока это одно, что большая нагрузка работы в Действие пропускается, если страница действительна в кеше. Но, похоже, это не так - если SetVaryByCustom
не может прервать действие? Как эта команда работает точно?
Если это не прерывает действие, есть ли какая-либо последующая проверка, которую я могу сделать, чтобы проверить, поднял ли кеш, чтобы я мог вернуться раньше? И что бы я вернулся, учитывая, что обычно ожидают, что целая страница заполнена данными?