什么阻止缓存在WebMatrix中工作?

时间:2013-02-08 19:37:59

标签: asp.net iis razor webmatrix

我在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>

}

1 个答案:

答案 0 :(得分:1)

您对OutputCache如何工作的假设是正确的。您是否可以查看firebug或chrome工具来查看到达页面的传出请求?如果您正在使用jQuery,有时人们会将$ .get或$ .ajax上的缓存属性设置为false,这会导致对页面的请求具有时髦的尾随查询字符串。我错误地在全局设置它以解决jQuery和IE的一些问题:

http://api.jquery.com/jQuery.ajaxSetup/

另一个要看的是DB调用的分组。你只是用一个请求打了很多电话吗?你是在一个循环中,在另一个读者中执行db命令吗?在这种情况下,代码会有所帮助。

祝你好运,我希望这会有所帮助!