OutputCache在持续时间之前到期

时间:2011-10-06 02:15:26

标签: asp.net iis-7 outputcache

我在ASP.NET 4.0 Webforms应用程序(IIS 7.5)上使用了一个非常简单的outputcache指令,它将页面缓存1小时。该应用程序没有任何内存压力,但页面在一小时之前到期。我创建了一个测试页面,只写出DateTime.Now来确认行为。

看起来确实只要我继续刷新页面它会保持缓存(大多数情况下),但如果我停止请求它几分钟并返回日期时间戳更改。我见过其他一些人发布类似的问题,但没有答案。我认为这与某些地方的某种配置或优化设置有关,其中IIS在缓冲区之前就很少从缓存中访问页面,但我似乎无法找到任何记录。

  

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

     

     

<%= DateTime.Now%GT;

2 个答案:

答案 0 :(得分:0)

您是在父页面上还是在该页面上的任何其他控件上设置了输出缓存?

此外,您的应用资源池在关闭之前设置为空闲多长时间?如果您的应用程序池回收,那么您的缓存将被重置。

Caching Portions of an ASP.NET Page

  

您还应该了解用户控件时会发生什么   输出缓存集存在于也具有输出的Web窗体页面中   缓存集。如果页面输出缓存持续时间比用户长   控制输出缓存持续时间,页面输出缓存持续时间为   对整个页面有效,包括用户控件。对于   例如,如果页面输出缓存设置为100秒和用户   控制输出缓存设置为50秒,存储整个页面   在输出缓存中持续100秒,无论设置较短   用于用户控制。以下示例演示了这一点。

答案 1 :(得分:0)

我遇到了类似的问题,并且在Web.config中增加percentagePhysicalMemoryUsedLimit似乎修复了它。以前只有25%,OutputCache每分钟都会重置一次。

<system.web><caching>
    <cache privateBytesLimit="0" privateBytesPollTime="00:02:00"
           percentagePhysicalMemoryUsedLimit="50" />