0

従業員の活動記録を表示するグラフを含む Web サイトがあります。データには階層があり (例: 地域 -> 州 -> オフィス -> マネージャー -> 従業員 -> 活動記録)、グラフをクリックするたびにレベルがドリルダウンされ、より具体的な情報が表示されます。最高レベル (リージョン) では、配列に最大 1000 個のオブジェクトをロードする必要があり、最低レベルでは最大 500,000 オブジェクトです。以下を使用して、JSON 形式のテキスト ファイルを介してグラフにデータを入力しています。

$.ajax({url:'data/jsondata.txt', dataType: 'json',
        success: function (data) {
        largeArray = data.employeeRecords;
}

応答時間/パフォーマンスを妨げずに使用できる別の方法はありますか? クライアント側のすべてのデータをプリロードする必要があるという考えにとらわれています。そうしないと、ユーザーのクリックでデータを取得する必要がある場合にラグタイムが発生します。誰かが私にベストプラクティスを教えてくれたり、クライアント側のデータが「多すぎる」と見なされるものを説明したりできれば、私はそれを感謝します.

参考までに、私は古い Web サーバーの使用に制限されています。サーバー側で何かをしたい場合は、従来の ASP に限定されます。それ以外の場合は、クライアント側にする必要があります。ありがとう!

4

1 に答える 1

3

サーバーの応答が速い場合

この場合、おそらく、ユーザーがクリックしたときにオンデマンドでデータをロードするだけで済みます。サーバーは高速なので、無駄にスマートになろうとする必要はありません。

サーバーが高速であるが十分に高速でない場合、最初のレベルを描画している間に次のレベルをプリロードできる可能性があります。たとえば、「office」レベルでグラフをレンダリングしたばかりの場合、ユーザーがまだ画面の更新に反応している間に、「manager」の次のレベルのデータを静かにプリロードします。

オンデマンドのデータに対してサーバーが遅すぎる場合

この場合、おそらくどこが遅いかを正確にモデル化し、それに対処する必要があります。ここでいくつかのことが行われていますが、あなたの質問は正確には言いません。

  1. サーバーのデータベースへのクエリが遅いですか? はいの場合は修正します。これを解決するためにクライアント側でできることはほとんどありません。
  2. サーバーは送信用にパッケージ化するのに時間がかかりますか? 修正が難しく、サーバーは十分に大きいですか?
  3. ネットワーク通信が遅い?うーん、送信するデータを減らすか、ユーザーをより高速な帯域幅に乗せる必要があります。
  4. ブラウザの解凍時間が遅い?(つまり、スクリプトがグラフ化する前にデータのデコードを遅らせます)。データのパッケージ化方法を変更するか、送信するデータ (チャンクなど) を減らします。

ブラウザーは 500,000 個のオブジェクトを処理できますか? 使用しているブラウザのメモリを監視するだけでよいはずです。これについては、はい/いいえという意見があります。ユーザーのブラウザ/ハードウェアに本当に依存するか、ターゲットにします。

この質問をご覧になることをお勧めします。 http を介して非常に大きなプレイリストのデータを送信する最も効率的な方法は何ですか? 上記の手順 4 ではるかに高速であることがわかった、データを送信および処理する別の方法を示しているためです。もちろん、オブジェクトが 50 万個になると localStorage を使用できなくなりますが、私は数百万の配列要素をダウンロードして実験してきましたが、問題なく動作します。(まだ WIP です) 私は jquery を使用していないので、これがどれだけ有用かはわかりません。

ベストプラクティス?申し訳ありませんが、質問のその部分についてはお手伝いできません。

于 2013-07-08T00:26:28.413 に答える