在previous question我試圖弄清楚爲什麼我的網站太慢了。有人在那裏回答正確,根據下面的Fiddler截圖,我在某個頁面上的所有javascript都加載了一個cachebuster參數!由javascript回發引起的Cachebuster參數?
據我所知,我下面的JavaScript的,指的都是普通的香草沒有章法。有時它們被單獨包括在內,有時作爲捆綁的一部分。視圖本身是一個相當複雜的儀表板,有很多局部視圖和多線程腳本來加載各種不同的小部件。我無法想象爲什麼有人會想到放入緩存。
是否有一些隱藏的tripwire,程序員之一可能會意外地發現,這會讓我們有這個緩存?任何想法如何讀這個提琴手報告,以便我可以告訴哪個特定的視圖觸發緩存?
編輯:通過試驗重命名捆綁包及其調用,我發現有問題的文件是_Layout.cshtml
。有時候它會正常加載腳本,有時候會加載緩存。實際代碼:
<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);
}
});
}
...
}
我們無法遠程調試您的項目。您的MVC網站將打印包含這些腳本的語句。打印這些語句的方式以及用於捆綁的API的方式決定了要設置哪些代碼或配置值以防止「緩存清除」。 **你**必須挖掘你的項目。或者你可以運氣好,有人會識別一個文件名,參數名稱或數字格式,然後說「哦,你只需要在你的web.config中設置debug爲false」,但是現在我認爲它太本地化了。 – CodeCaster 2013-05-06 12:12:42
@CodeCaster - 我的問題有兩個目標:一,找出這是否是一個常犯的錯誤;二,得到一些關於如何追蹤它的提示。我對javascripts非常不熟悉,以及它們是如何包含在內的,所以我希望有人可以推薦一種技術來跟蹤這種情況。例如,如果我想要的話,我甚至不知道如何包含一個腳本和一個cachebuster,所以我不知道要查找什麼代碼! – 2013-05-06 12:17:16
你在看哪些文件?如果文件未更改,system.web.optimization捆綁框架將附加一個散列,該散列應保持不變。如果是kendo,那麼包含添加這些腳本的代碼。 – 2013-05-06 12:46:54