在previous question中,我试图解决为什么我的网站速度太慢。有人回答正确,根据下面的Fiddler截图,某个页面上的所有javascripts都加载了cachebuster参数!
据我所知,我对以下javascripts的所有引用都是普通的,没有任何技巧。有时它们被单独包括在内,有时也作为捆绑包的一部分。视图本身是一个非常复杂的仪表板,有许多部分视图和多线程脚本来加载各种不同的小部件。我无法想象为什么有人会想到放入一个名人堂。
是否有一些隐藏的tripwire,其中一个程序员可能不小心偶然发现了,这会让我们有这个名量大片?知道如何阅读这个Fiddler报告,以便我可以判断哪个特定视图触发了缓存器吗?
修改:通过尝试重命名捆绑包及其调用,我发现违规文件为_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的视图必须做什么才能强制所有脚本使用缓存单呢?
编辑: Kendo UI forums描述了相同的问题(撰写本文未解决)。这是我们的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);
}
});
}
...
}
答案 0 :(得分:2)
最终结果是Kendo found it was a bug in their TabStrip control。
我们实际上已经通过重构视图并将回发数据作为局部视图返回来使用不同的解决方法。因此,或者使用他们建议的解决方案(明确地将缓存设置为true)都可以。