есть ли в любом случае, чтобы обнаружить, когда определенное действие контроллера будет выселено при использовании атрибута outputcache - PullRequest
1 голос
/ 10 июля 2011

у меня есть этот код:

    [AcceptVerbs(HttpVerbs.Get)]
    [OutputCache(Duration = 86400, VaryByParam = "*")]
    public ActionResult GetData(MyParams myParams)
    {
        return GetDataEx(myParams);
    }

для кэширования группы Json на моем веб-сервере.

я вижу на этой странице , там написано

Нет гарантии, что содержимое будет кэшироваться в течение указанного вами времени. Когда ресурсов памяти становится мало, кэш начинает извлекать содержимое автоматически .

есть ли способ получить определенный обратный вызов, когда этот элемент выгружается из кэша из-за нехватки ресурсов памяти. Я не вижу, что кеш работает должным образом, но я предполагаю, что у меня не хватает памяти, но если бы у меня был этот обратный вызов, я мог бы точно сказать.

1 Ответ

1 голос
/ 10 июля 2011

При кэшировании выходных ответов невозможно получить уведомление об истечении срока действия содержимого. И, честно говоря, вас это не должно волновать, если срок действия содержимого истек, действие контроллера просто будет выполнено, а новое содержимое снова будет кэшировано. Также обратите внимание, что в зависимости от того, где вы сконфигурировали этот выходной кеш для хранения, если он находится в нисходящем направлении на промежуточных прокси-серверах или клиентских браузерах, срок действия кеша полностью находится вне вашего контроля.

Если вы кэшируете объекты вручную в кеш ASP.NET, вы можете зарегистрировать CacheItemRemovedCallback , который будет выполняться при удалении элемента, но это не относится к кешированию вывода ответа, которым вы и являетесь. используя здесь.

...