2012-04-11 5 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だということでしょう。サーバーサイドのコードを高速化する方法を見てみましょう。 –

+1

また、1回の呼び出しでグラフのすべてのデータを返してから、各グラフのJSONを個別に解析することもできます。繰り返しますが、これはサーバーの速さと、これが利点となるかどうかを受け入れる接続の数によって異なります。 –

答えて

2

を使用すると、ネットワーク伝送が、あなたは、IDのリストを取り、いくつかの結果を返すサーバー上に新しい機能を作成することができ、長い時間がかかっていると考えられる場合。

+0

また、Webサーバーがデータを圧縮していることを確認して(送信するデータ量が少なくなるように) –

関連する問題