2009-09-19 10 views
0

私は、複数のユーザーと大量のデータからかなりの更新が必要なWebプロジェクトに取り組んでいます。リフレッシュしないでサイト(多くのデータ)を更新する最も効率的な方法は?

データの予想される量は、それぞれ14個のフィールドがあり、定期的に更新する必要がある70個の一意の行です。これは合計980フィールドです。

まず、forループを使用してすべてのフィールドを更新する一連の同期ajaxクエリをデータベースに対して試行しました。これは大きなハングを引き起こしました。私は、ページが凍結されてから30秒間の更新が20秒間続いたと言います。

次に、forループ内のフィールドを更新するonsuccessと非同期にajaxクエリを実行しました。これは減速を緩和しましたが、私は奇妙な問題を抱えていました。私のforループ変数の変更は、物事が間違ったHTML要素に書き込まれる原因になっていたと思います。

現在、私はバックエンドの.aspページをHTMLに書き込んでいて、divを含むinnerHTMLをクリアしてから、div.innerHTML = transport.responseTextを設定しています。これはかなりうまくいくようですが、利用可能なツール(vbscript、javascript、およびAccessデータベース)があれば、他の人がこのような多くのデータを更新するために何をしたのか不思議です。

すべてのワークステーションのデータは同じになり、複数のユーザーがリアルタイムでデータの編集を行います。しかし、彼らはそれぞれ独自のデータ部分を更新することに関心がありますが、すべてのユーザーが最新の反復で更新可能で表示可能にする必要があります。

答えて

1

1000フィールドのHTMLテーブルは、「大量のデータ」ではありません。

JSONまたはシンプルなCSVを使用して各セルにIDを与え、javascriptですべてを更新すると、ブラウザがテーブルを再描画して新しいDOM構造を作成する必要がなくなるため、処理が高速になります。

ポル例:

サーバはあなたにこの方法でデータを提供することを想像して: 12,234,564,423,1223,2413,133,113,5443 ...

その後、JavaScriptであなたが作ることができます。

var data = responseText.split(','); 

(テーブルセルにCELL_0、CELL_1、CELL_2 ...のようなID名があるとします)を入力します。

for (i=0; i<data.length; i++) { 
    document.getElementById('CELL_'+i).innerHTML=data[i]; 
} 

それです。

+0

これは私が以前にやっていた方法にかなり近いです。私はそれをJSONとして渡していました。プロトタイプeval.jsonはプロセッサ集中型呼び出しですか? –

+0

あなたの質問に: "私はバックエンドの.aspページをHTMLに書き込んで、divのinnerHTMLをクリアしてから、div.innerHTML = transport.responseTextを設定しています。"これは、セルの内容を更新するだけとは大きく異なります。ちょうど1000の値のJSONはOKです。 – Peter

+0

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええばええ –

0

ユーザーはページとどのようにやりとりする予定ですか?同時に複数のユーザーが同じデータを扱うことになり、互いの結果が見えると予想されますか?あなたはこのasp.netのタグを付けましたが、vbscript、javascript、およびアクセスを使用できることだけを言及しました - このasp.netはどうですか?

編集:

ありがとうございます。各行に編集/保存ボタンが表示されますか?行は、ユーザーが自分のデータを編集する必要があるまで(私はそれらが各行を編集していると仮定しています)、データが更新され、その行が他のユーザーによって編集用にロックされるまで、ユーザーが完了すると、[保存]をクリックしてデータが更新され、行がロック解除され、ページのデータが最新表示されます。さらに、ユーザーが積極的に編集していないときに最新のものを得るために数分ごとに実行するように設定することもできます。また、データの構造に応じて、ユーザーのページが最後に更新された後に変更されたデータを取得する必要があります。毎回すべてを取得する必要はありません。また、ユーザーの行が編集しているデータだけに限られます。

+0

私はそれがasp.netをタグ付けしていたことを認識していませんでした、私はそれが存在するように見えないaspタグを付けることを意味しました。 あなたの質問に答えることを含め、わかりやすく投稿を編集しました。 –

関連する問題