我在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;
答案 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" />