Срок действия OutputCache истекает до истечения срока действия - PullRequest
3 голосов
/ 06 октября 2011

Я использую очень простую директиву outputcache для приложения веб-форм ASP.NET 4.0 (IIS 7.5), которое кэширует страницы в течение 1 часа. Приложение не находится под давлением памяти, но срок действия страниц истекает раньше, чем через час. Я создал тестовую страницу, которая просто записывает DateTime.Now для подтверждения поведения.

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

<% @ Page Language = "C #" MasterPageFile = "Default.Master" AutoEventWireup = "true" Title = "Test"%> <% @ OutputCache duration = "3600" location = "Any" varByParam = "*"%>

<% = DateTime.Now%>

Ответы [ 2 ]

0 голосов
/ 14 апреля 2015

У меня была похожая проблема, и увеличение процентаPhysicalMemoryUsedLimit в Web.config, похоже, устранило ее.Ранее при 25% выходной кэш сбрасывался каждую минуту или около того.

<system.web><caching>
    <cache privateBytesLimit="0" privateBytesPollTime="00:02:00"
           percentagePhysicalMemoryUsedLimit="50" />
0 голосов
/ 06 октября 2011

У вас установлен выходной кеш на родительской странице или на любых других элементах управления на этой странице?

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

Кэширование частей страницы ASP.NET

Вы также должны знать, что происходит, когдапользовательский элемент управления с выходным набором кэширования существует на странице веб-форм, на которой также установлен выходной набор кэширования.Если длительность кэша вывода страницы превышает длительность кэша вывода пользовательского элемента управления, длительность кэша вывода страницы действует для всей страницы, включая элемент управления пользователя.Например, если кэширование вывода страницы установлено на 100 секунд, а кэширование вывода пользовательского элемента управления установлено на 50 секунд, вся страница сохраняется в кэше вывода в течение 100 секунд, независимо от более короткой настройки для пользовательского элемента управления.Следующий пример демонстрирует это.

...