【问题标题】:OutputCache expiring prior to durationOutputCache 在持续时间之前到期
【发布时间】:2011-12-01 22:52:34
【问题描述】:

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

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

【问题讨论】:

  • 如果没有母版页,问题是否仍然存在?

标签: asp.net iis-7 outputcache


【解决方案1】:

我遇到了类似的问题,在 Web.config 中增加 percentPhysicalMemoryUsedLimit 似乎已经解决了这个问题。以前为 25%,OutputCache 每隔一分钟左右就会重置一次。

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

【讨论】:

    【解决方案2】:

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

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

    Caching Portions of an ASP.NET Page

    您还应该注意当用户控件使用 输出缓存集存在于也具有输出的 Web 窗体页面中 缓存集。如果页面输出缓存持续时间长于用户 控制输出缓存时长,页面输出缓存时长为 对整个页面有效,包括用户控件。为了 例如,如果页面输出缓存设置为 100 秒并且用户 控制输出缓存设置为50秒,存储整个页面 在输出缓存中保留 100 秒,无论较短的设置如何 用于用户控制。以下示例演示了这一点。

    【讨论】:

    • 我给的样例基本就是这样,没有嵌套控件,只有一个页面,有一个指令和一个DateTime.Now。
    猜你喜欢
    • 2018-10-03
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多