2

上一个问题中,我试图弄清楚我的网站为什么这么慢。有人正确回答,根据下面的 Fiddler 屏幕截图,我在某个页面上的所有 javascript 都加载了 cachebuster 参数!

提琴手截图

据我所知,我对以下 javascripts 的所有引用都是普通的,没有任何技巧。有时它们单独包含,有时作为捆绑包的一部分。视图本身是一个非常复杂的仪表板,有许多局部视图和多线程脚本来加载各种不同的小部件。我无法想象为什么有人会想到放入缓存破坏器。

是否有一些隐藏的绊线,其中一位程序员可能不小心绊倒了,这会让我们拥有这个缓存破坏者?知道如何阅读此 Fiddler 报告,以便我可以判断哪个特定视图触发了 cachebusters?

编辑:通过尝试重命名捆绑包及其调用,我发现有问题的文件是_Layout.cshtml. 有时它会正常加载脚本,有时会使用 cachebuster。实际代码:

<body id="mainLayout">
@Styles.Render("~/Content/themes/base/css", "~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
... etc ...

这没什么不好的,对吧?那么基于 _Layout 的视图必须做什么才能强制所有脚本使用 cachebuster 呢?

编辑:在剑道 UI 论坛上描述了相同的问题(在撰写本文时尚未解决)。这是触发问题的javascript代码:

$(document).ready(function () {
    if ('@ViewBag.Loaded' != 'Y') {
        $.ajax({
            type: 'POST',
            url: "/CRCDashBoard/LoadCRCDashboard",
            success: function (data) {
                $("#mainLayout").html(data);
            },
            error: function (jqXhr, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });
    }
    ...
}
4

1 回答 1

2

最终,Kendo 发现这是他们 TabStrip 控件中的一个错误

实际上,我们已经使用了一种不同的解决方法,即重组视图并将回发数据作为部分视图取回。因此,或者使用他们建议的解决方案(明确将缓存设置为 true)都可以工作。

于 2013-05-08T11:49:29.257 回答