我在 WebMatrix Razor ASP.Net 站点中有许多页面,我在其中添加了一行代码:
Response.OutputCache(600);
通过阅读它,我假设这意味着 IIS 将创建页面生成的 html 的缓存,在接下来的 10 分钟内提供该 html,并且在下一个请求到来的 10 分钟后,它将再次运行代码.
现在该页面作为定时 jquery 调用的一部分被获取。客户端中的时间码每分钟运行一次。那里的代码非常简单:
function wknTimer4() {
$.get('PerfPanel', function(data) {
$('#perfPanel').html(data);
});
它偶尔会出现缓存,但是当我查看在 10 分钟内完成的数据库查询数量时,我可能有超过 100 个数据库查询。我知道缓存没有按我预期的方式工作。缓存是否仅适用于单个会话?还有其他限制吗?
更新:客户端做什么并不重要,无论是通过 jQuery 调用还是直接 html 来获取页面。如果服务器正在缓存,那么客户端做什么都没有关系。
更新 2:此处转储的完整代码。无聊的东西:
@{
var db = Database.Open("LOS");
var selectQueryString = "SELECT * FROM LXD_funding ORDER BY LXDOrder";
// cache the results of this page for 600 seconds
Response.OutputCache(600);
}
@foreach (var row in db.Query(selectQueryString) ){
<h1>
<a href="Dashboard/FundingDetails/@row.Status">@row.quotes</a> Loans @row.NALStatus, oldest @(NALWorkTime.WorkDays(row.StatusChange,DateTime.Now)) days
</h1>
}