在上一个问题中,我试图弄清楚我的网站为什么这么慢。有人正确回答,根据下面的 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);
}
});
}
...
}