1

私は3年前に書かれたデータ視覚化ウェブツールを書き直しています。それ以来、ブラウザのJavaScriptエンジンが大幅に高速化したので、ジョブの一部をサーバーからクライアントに転送することを考えていました。

このページでは、データは表とマップ(またはチャート)で視覚化されます。同じデータを使用していますが、方法が異なるため、表示用のデータを準備する2つのアルゴリズムが異なります。

ユーザーがデータドロップダウンセレクター(3メインに応じて3メイン+ 2サブ)を操作するたびに、3つのajaxリクエストが送信され、phpがすべての作業を実行し、必要なデータのみを送り返します(テーブル/xmlのhtmlでグラフ)非常に小さな応答で、パフォーマンスの問題はなく、javascriptは応答を追加し、変更イベントを追跡するだけでした。

したがって、パフォーマンスは問題ありませんでしたが、基準を変更するたびに、ユーザーはajaxの応答を待つ必要があります:/

今私の考えは、メインの3つの基準の組み合わせが変更されるたびに、1つのajaxリクエストでjsonオブジェクトを送り返し、次にjavascriptでajaxsuccessのテーブルとチャート/マップにデータを入力し、次に2の変更時にも送信することです。サブ基準。

私の躊躇は、サーバーによって送信されるjsonの構造、ペイロードのバランスに関するものです。

実際、生データからデータを表示するために必要なjson構造を作成するために必要なアルゴリズムが1つしかない場合、追加の処理なしでjavascriptが処理できるように、phpでデータをこのオブジェクトに処理する必要があります。しかし、2つあります。

それで

  • phpにデータを処理させて2つのオブジェクト(1つはテーブル用/もう1つはチャート用)を作成すると、json応答のサイズが2倍になり、クライアント側のメモリ使用量が増加します。この2つのオブジェクトには同じデータが含まれているため、このアプローチは好きではありません。構造が異なり、冗長性が悪いのではないでしょうか。

  • 生のオブジェクトを送信し、javascriptに何を表示し、クライアントに多くの仕事を与えているかを検索させる場合-これはすべてのサブ基準の変更でも行われます(または、ajaxsuccessですべてのjsonオブジェクトを一度作成して準備ができているこの下位基準の変更の場合?)-ここでは、古いブラウザ/小さなRAMを使用しているユーザーの心配はほとんどありません...

(未処理の生のjsonオブジェクトは、基準に応じて3kbから12kbの間、500から2000レコードの間で異なります)

私は最善のアプローチを見つけることができていません...

したがって、この単一の生データから複数の構造化オブジェクトへのジョブの場合、生データを処理するphp(応答サイズを増やして冗長データを送信する)またはjavascript(javascriptペイロードを増やす)がありますか?

ご意見ありがとうございます

4

1 に答える 1

0

適切な解決策を見つけたので、私自身の質問に答えます。

私は@Daverandomのアドバイスに従いました:

  • PHPは生データを送信します(主な基準の組み合わせに依存するいくつかのパラメーターとともに)

  • JavaScriptは生データを処理し、ページにレンダリングします

  • JavaScriptは、サブ基準が変更された場合に生データを再処理します。これは、テスト時にループプロセスが非常に高速であり、ブラウザーがフリーズしないため、構造化オブジェクトをスコープ内に保持する必要がないためです。

  • アグレッシブなキャッシングヘッダーは、ユーザーがすでに参照されているデータを再参照する場合に備えて、JSON AJAX応答で送信されます(これらのデータは変更されません-毎年新しいレコードのみが追加されます)。したがって、生データはJavaScriptスコープに保持されません。表示されない

  • さらに、phpによってエコーされたJSON文字列はサーバーにキャッシュされるため(これらのデータは変更されないため)、データベースクエリが削減され、応答時間が改善されます。

最終的なコードはきちんとしていて、保守が簡単で、アプリケーションは問題なく動作します。

助けてくれた@Daverandomに感謝します。

于 2012-12-23T16:45:50.483 に答える