IIS7输出缓存 - 仅在缓存中存在60秒?

时间:2012-01-06 23:41:33

标签: iis caching iis-7 web-config output-caching

我正在尝试缓存HTTP处理程序的JSON输出(不是ASP.NET页面,因此页面级OutputCache指令不适用)。我在Windows Server 2008上运行IIS 7.5。

我已经在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,机器配置)以获得60秒的某种TTL,但我很茫然。

我怀疑缓存清除程序每次运行时都可能正在吃缓存条目。我修改了注册表项,因此清除程序运行频率较低;这没有帮助。

我还怀疑IIS过度清理缓存,因为该机器正在使用大量的物理RAM。此特定服务器具有约66%的物理RAM饱和度。我试图将静态数量(1 GB)分配给输出缓存,而不是允许IIS管理缓存,但这也是不成功的。

我认为这与问on this Stack Overflow page的问题相同,但那家伙从来没有得到答案。

提前致谢。

编辑:我终于能够通过修改OutputCacheTTL和ObjectCacheTTL注册表值来解决此问题,如this very helpful article中所述。似乎Microsoft文档相当不完整。

0 个答案:

没有答案