我在ASP.NET 4.0 Webforms应用程序(IIS 7.5)上使用了一个非常简单的outputcache指令,该指令将页面缓存1小时。该应用程序没有任何内存压力,但是页面会在一个小时之前过期。我创建了一个测试页面,该页面仅写出DateTime.Now来确认行为。
看来,只要我继续刷新页面,它就会一直保持缓存状态(大多数情况下),但是如果我停止请求几分钟并返回datetime标记更改,它就会一直保持缓存状态。我见过其他一些人发表过类似的问题,但没有答案。我认为这与某处的某种配置或优化设置有关,在这种情况下,IIS很少会比持续时间更早地访问缓存中的页面,但我似乎找不到任何记录的内容。
AutoEventWireup =“ true”标题=“ Test”%> location =“ Any” variableByParam =“ *”%>
最佳答案
您是否在父页面或该页面上的任何其他控件上设置了输出缓存?
另外,您的应用程序池在关闭之前会设置为空闲多长时间?如果您的应用程序池回收,那么您的缓存将被重置。
Caching Portions of an ASP.NET Page
您还应该知道当用户控件使用
输出缓存集存在于Web窗体页面中,该页面也具有输出
缓存集。如果页面输出缓存持续时间长于用户
控制输出缓存的持续时间,页面输出缓存的持续时间为
对整个页面有效,包括用户控件。对于
例如,如果页面输出缓存设置为100秒,并且用户
控制输出缓存设置为50秒,存储整个页面
在输出缓存中持续100秒,无论设置如何短
供用户控制。以下示例对此进行了演示。
关于asp.net - OutputCache在持续时间之前到期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7669715/