2012-04-11 28 views
0

我有很多的圖表(hightchart)在同一個頁面產生的,它至少需要5-6秒的負載我所有的圖表..用ajax-json請求優化多個.each的方法?

HTML頁面:

<div class="graph_score" title="2" > 
    <div class="graph_score" title="3" > 
    <div class="graph_score" title="4" > 
    <div class="graph_score" title="5" > 
.... 

我的jQuery :

$(".graph_score").each(function() { 
     id_graph = $(this).attr("title"); 

     $.getJSON('http://' + document.domain + '/school/teachers/generate_score/graph' + id_graph, function(data) { 
      options = data; 
      options.tooltip = { 
      formatter: function() { 
       var extrafield = this.series.options.extrafield; 
       var extrafield2 = this.series.options.extrafield2; 
       var extrafield3 = this.series.options.extrafield3; 
       return '<b> Note: ' + this.y + ' % <br/>' + '<b>Nom de l\'examen:</b>' + extrafield[this.point.x - 1] + '</b><br/><b>Pondération</b>' + extrafield2[this.point.x - 1] + "<br /><b>Date</b>" + extrafield3[this.point.x - 1]; 
      } 
      } 
      chart = new Highcharts.Chart(options); 
     }); 

    }) 

我可以做些什麼來呈現此頁面更快嗎?

*我知道問題是我的腳本調用8次http://'document.domain +'/ school/teachers/generate_score所以它的8個DOM請求.....但我不知道如何優化是...

THX

+0

嘗試在腳本中添加一些定時器,以查看瓶頸的位置 - 它可以在AJAX請求中檢索數據或顯示數據。我的猜測是,這是花時間的AJAX。查看加速服務器端代碼的方法。 – 2012-04-11 15:03:26

+1

另外,您可以在1次調用中查看返回圖形的所有數據,然後分別解析每個圖的JSON。這又取決於你的服務器有多快,以及它接受多少連接,這是否會帶來好處。 – 2012-04-11 15:05:06

回答

2

如果您認爲網絡傳輸花費很長的時間,那麼你可以創建一個需要ID的列表,並返回結果的幾個服務器上的新功能。

+0

另外,您需要確保您的Web服務器正在壓縮數據(因此傳輸的數據量較少) – 2012-04-11 15:05:49