2017-07-17 60 views
0

問題:首先AJAX調用更快調試時

當我在調試的角度看是我的第一個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之前,唯一耗費時間的操作纔會發生。
  • 沒有圖形正在加載頁面上。

結論

  1. 爲什麼我在兩個不同視角的加載時間之間的這種差異?
  2. 爲什麼只有第一次AJAX調用纔會發生?
  3. 我該怎麼做才能加快這個過程?
  4. 如何在不使用調試器的情況下觀察需要花費多長時間?

預先感謝您的任何幫助,想法,解釋,......

+2

不是它應該的問題,但你可以刪除的document.ready,它並沒有真正做任何好處,當你不訪問DOM,並沒有真正有任何業務是這樣的一個Ajax函數內部。 – adeneo

+0

它實際上可能很重要,因爲DomReady事件偵聽器僅在調用'getJSONfromURL'函數後設置。所以它不僅是無用的,但它甚至可能是有害的,因爲它在等待一個已經發生的事件。 –

+0

感謝您的快速回復。我刪除它,但它並沒有改變任何東西。 – Marc

回答

0

的問題無關,與AJAX調用本身。我打電話的REST-API是越野車。編寫我自己的RESTful servlet解決了這個問題。