Кэширование вывода IIS7 - в кеше живет только 60 секунд? - PullRequest
2 голосов
/ 07 января 2012

Я пытаюсь кэшировать выходные данные JSON обработчика HTTP (НЕ страницы ASP.NET, поэтому директива OutputCache уровня страницы не применяется).Я использую IIS 7.5 в Windows Server 2008.

Я добавил строки в файл Web.config для включения кэширования в пользовательском режиме (не в режиме ядра, так как мне нужна аутентификация):

<system.webServer>      
    <caching enabled="true" enableKernelCache="false">  
        <profiles>
            <!-- cache content according to full query string for 12 hours -->
            <add varyByQueryString="*" duration="12:00:00" policy="CacheForTimePeriod" extension=".aspx" />
        </profiles>             
    </caching>      
    <urlCompression dynamicCompressionBeforeCache="true" />
</system.webServer>

<location path="Content">
    <system.webServer>
        <!-- cache content that's requested twice in 30 minutes -->
        <serverRuntime enabled="true" frequentHitThreshold="2" frequentHitTimePeriod="00:30:00" />               
    </system.webServer>
</location>  

Содержимое успешно кэшируется, но живет только 60 секунд .Я просмотрел различные конфигурационные файлы (Web.config, applicationHost.config, config машины) для некоторого TTL 60 секунд, но я в растерянности.

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

Я также подозревал, что IIS чрезмерно очищает кэш, поскольку машина использует много физической памяти.Этот конкретный сервер имеет около 66% физической насыщенности оперативной памяти.Я попытался выделить статический объем (1 ГБ) для выходного кэша, вместо того, чтобы IIS управлял кэшем, но это также оказалось неудачным.

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

Заранее спасибо.

РЕДАКТИРОВАТЬ: Я наконец смог решить эту проблему, изменивЗначения реестра OutputCacheTTL и ObjectCacheTTL, как описано в этой очень полезной статье .Кажется, документация Microsoft довольно неполная.

...