3

私はノード アプリを作成しており、多数の JSON マップ データをサーバーに提供する必要があります。データが正しく表示されるようにするには、解析する必要があります。

サーバーで解析する (そしてこの解析されたデータ オブジェクトをクライアントに送信する) か、純粋な json を送信し、ajax 呼び出しの後にクライアント側で解析する方がよいかどうか疑問に思っています。

サーバー上でこれを行う際の私の最大の懸念は、多くの同時クエリが多数の人々のすべてを遅くする可能性があることです.

サーバー側コード オプション:

var data = [];
db.simple_query([{ask: COMPLEX QUERY TO RETURN DATA AS JSON }], function(err, geo_data){
                        if (err) {
                            callback(err);
                        }
                        else{
                            data.push(JSON.parse(geo_data.rows[0].row_to_json));
                            callback();
                        }
                    });

クライアント側コード オプション:

$.ajax({
                    type: 'GET',
                    url: url,
                    success: function(data){
                        if (data){
                            $.each(data, function(i, geo){
                                L.geoJson(JSON.parse(geo)).addTo(map);
                            });
                        }
                    },
                    error: function(data){
                        //Error Handling
                    }
                });
4

2 に答える 2

4

それは本当に問題ではありません。データベース アクセス (または基本的にはネットワークまたはディスク アクティビティに関係するもの) と比較して、JSON のシリアライズ/デシリアライズは非常に高速です。最適化を必要としないものを過度に最適化しないでください。

ただし、サーバー側の処理なしでデータをクライアントに渡し、すでにJSON 文字列を取得したい場合は、サーバー上で逆シリアル化し、再度シリアル化してクライアントに送信する必要があります。それを逆シリアル化します。

于 2013-05-07T19:54:11.273 に答える
2

これが維持、スケーリング、または今後のサポートを意図しているサービスである場合は、おそらくサーバーでの解析を使用します。そうでなく、短期的な必要性や何らかの理由で戦術的にこれを妨害している場合は、クライアントで解析するだけです。いずれにせよ、JSON の解析/シリアライゼーションの影響は無視できると予想しています...そのため、決定を下す際に他の要因を考慮する必要があります。

サーバー側の解析を使用すると、いくつかの理由で有利な立場に置かれます。まず、このデータに対してより適切なコントラクトを提供できます (たとえば、データをまとまりのある責任のセットに分解します。漏れやすい/醜い詳細を非表示にします。ペイロードのサイズを縮小して、適切なサイズに刈り込みます)。 )。次に、別のデータ プロバイダーを使用することを選択したり、基になるデータ プロバイダーを変更したり、実装の詳細 (解析アルゴリズムなど) を変更したりする場合は、これらの決定をクライアントから保護することができます。また、サービスのパフォーマンスをスケーリングまたは最適化するためのサーバー上のオプションは多数あり (キャッシング、解析の最適化、追加のマシンなど)、これらの実装の詳細も消費者から隠される可能性があります。

全体として、状況 (例: 短いタイムライン、これはプロトタイプ) が特に指示しない限り、実装の詳細を非表示にするために、適切なコントラクトのセットを提供し、サーバー側で解析を行います。

于 2013-05-07T20:28:49.307 に答える