0
當我在調試的角度看是我的第一個AJAX調用中下1秒完成。如果我在不調試的情況下執行相同的代碼,第一個呼叫佔用1分鐘,而後續呼叫再次在1以下。 (轉載的Chrome,Firefox和IE)
我的AJAX調用:
var getJSONfromURL = function(url, callback){
//removed '.ready' according to @adeneo's and @Jeremy_Thille's comments
//$(document).ready(function(){
var request = $.getJSON(url, callback);
request.done(function(){
//something...
});
//});
}
更多詳情
- 的HTML文檔調用此函數需要大約200毫秒來加載。
- 回調函數和request.done部執行〜1分鐘getJSONFromURL結束後。
- 甲的console.log()顯示的getJSON被調用一次。當我使用XMLHttpRequest的被觀察到
- 同樣的行爲。 (readyState的〜1分鐘後發生變化。)
- 載入網址在瀏覽器下1S需要。
- 要加載的JSON的大小約爲500B。
- 被請求都在呼叫和JSON的HTML是在本地主機上。 (後者是從MongoDB的-NOSQL數據庫REST-API)
- 圍繞該功能關於JS:該HTML的裝載之後該腳本將被調用。在加載google.charts和jquery之前,唯一耗費時間的操作纔會發生。
- 沒有圖形正在加載頁面上。
結論
- 爲什麼我在兩個不同視角的加載時間之間的這種差異?
- 爲什麼只有第一次AJAX調用纔會發生?
- 我該怎麼做才能加快這個過程?
- 如何在不使用調試器的情況下觀察需要花費多長時間?
預先感謝您的任何幫助,想法,解釋,......
不是它應該的問題,但你可以刪除的document.ready,它並沒有真正做任何好處,當你不訪問DOM,並沒有真正有任何業務是這樣的一個Ajax函數內部。 – adeneo
它實際上可能很重要,因爲DomReady事件偵聽器僅在調用'getJSONfromURL'函數後設置。所以它不僅是無用的,但它甚至可能是有害的,因爲它在等待一個已經發生的事件。 –
感謝您的快速回復。我刪除它,但它並沒有改變任何東西。 – Marc