由于我网站主页的数据库驱动内容不经常更改,我使用ASP.Net输出缓存来保持内容1小时:
<%@ OutputCache Duration="3600" VaryByParam="none" %>
我在.ASCX控件的开头和结尾有一个简单的HTML注释,我可以用来验证输出是否正确缓存(通过在浏览器中使用'view source'):
<!-- Cached Area (Created at: 10:08:08 PM) Begin Cache -->
...
<!-- End Cached Area -->
缓存本身效果很好。
但是,大约每天一次,ASP.NET会捕获一个EMPTY缓存区域。据我所知,这是因为当前一个缓存失效时,机器人(或其他自动进程)是第一个被站点停止的东西,并且由于来自'bot的奇怪请求,该站点创建一个空输出......然后缓存它。
当然,这个网站的“空白”部分也会被人类在下一个小时看到。
有没有办法“查询”输出缓存以查看其中的内容?或者(甚至更好),检查“建议”缓存并确定它是否值得海绵......错误,我的意思是缓存值得吗?
如果输出不包含货物,我想立即转储(或永不缓存)。
注意:检查传入的有效请求不是一个好的解决方案,因为在输出缓存发生之前可能存在一系列复杂的交互。我需要能够查询缓存本身。