【问题标题】:What keeps caching from working in WebMatrix?是什么让缓存无法在 WebMatrix 中工作?
【发布时间】:2013-02-08 19:37:59
【问题描述】:

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

}

【问题讨论】:

    标签: asp.net iis razor webmatrix


    【解决方案1】:

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

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

    这里要查看的另一个是数据库调用的分组。您是否只是通过一个请求打了很多电话?您是否在另一个阅读器中循环执行 db 命令?这种情况下的代码会很有帮助。

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

    【讨论】:

    • Response.OutputCache 有一个可选参数,称为 varyByParams,它会导致它为不同的参数缓存不同的 html。在我的情况下,即使 jquery 正在执行时髦的尾随查询字符串,服务器也应该缓存并返回相同的结果。单个 cshtml 页面中有一个数据库调用,因此没有会​​导致查询多次执行的循环或决策。可能不是看查询,而是根据simplemembership cookie缓存不同的html。
    • 回想起来,我不希望它为每个人缓存完全相同的 html,我希望它只为允许的角色执行此操作。但是,关于角色的决定是在我想要缓存的 cshtml 文件中......因此,我相信如果你关心安全性,你不应该使用 OutputCache 函数。相反,我计划缓存数据,这样我就不会进行昂贵的数据库调用,然后在不调用 Response.OutputCache 的情况下运行 cshtml 代码。
    • 我奖励了贾斯汀·贝克威斯,因为他的答案是最好的,但我仍然认为某处有解释:)
    • 如果您想提供代码示例,我很乐意与 asp.net 人员一起找出问题所在。
    猜你喜欢
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多