2

100個のオブジェクトを含むページがあり、jsonに変換すると各ページが約700バイトであるとします。

オブジェクトをphpベースのコントローラーに保存するために、次のオプションがあります。

オプション1

オブジェクト(100個のオブジェクト)ごとに、次の手順を実行します

  1. オブジェクト定義2を取得します。jsonに変換します
  2. PHPコントローラーにhttpPOSTを実行します
  3. phpコントローラーはそれをファイルまたはデータベースに保存します。

オプション2

変数bigJsonString;

オブジェクト(100個のオブジェクト)ごとに、次の手順を実行します

  1. オブジェクト定義2を取得します。jsonに変換します
  2. オブジェクトの終わりを示す区切り文字を使用して、文字列変数「bigJsonString」にjsonを追加します。

大きな脂肪bigJsonStringが構築された後

  1. 「bigJsonString」を送信して、PHPコントローラーにhttpPOSTを実行します
  2. phpコントローラーはそれをファイルまたはデータベースに保存します。

オプション1では、100件のhttp投稿を次々に行っています。これはアラームを発生させますか?これは、ajax投稿を行うWebアプリケーションでは正常ですか?

2番目のオプションは安全に思えますが、唯一の懸念は、100個のオブジェクトが500個のオブジェクトになる場合、または「bigJsonString」の長さが数メガバイトになる場合です。

導入できる3番目のオプションは、オプション1と2のハイブリッドで、「bigJsonString」を作成することから始め、長さが特定の制限に達した場合は、ajaxポストを実行します。文字列をフラッシュし、残りのオブジェクト用に文字列を再構築します。

落とし穴は何ですか、そして通常または標準的な慣行は何ですか。誰かがこれがすでに分析されているリソースを指すことができれば、それは素晴らしいことです。

どうもありがとう。

4

4 に答える 4

1

私はその状況を推測します。ただし、サーバーに100個のリクエストを一度に(それ自体で)送信するのが適切な状況は見当たりません。

個人的には、各オブジェクトをjavascript配列にプッシュし、配列のJSON表現をPHPに送信するだけです。これにより、区切り文字について心配する必要がなくなります。

于 2011-02-08T22:58:58.497 に答える
1

これは、オブジェクトをサーバーに投稿する速度によって異なります。jsonオブジェクトが毎秒投稿されている場合、投稿ごとに1つのオブジェクトはそれほど悪くありません。しかし、1秒間に100を投稿する場合は、実際に大きなリクエストを作成する必要があります。

リクエストごとに大幅な遅延が発生します。パフォーマンスの観点から、大きなマルチオブジェクトのjson文字列を作成することをお勧めします。

オブジェクトの1つにエラーがある場合はどうなりますか?他のすべてのオブジェクトの処理を停止してダンプしないことを確認する必要があります。そうしないと、ユーザーはそのすべてのデータを再度アップロードする必要があります。

複数のリクエストを行う場合は、オブジェクトのキューのどこにいるかが正確にわかっているため、クライアント側でより適切なユーザーフィードバックを提供できます。

これらすべてのバランスを取るのはあなた次第です。

幸運を。

于 2011-02-08T23:01:06.890 に答える
1

ブラウザは通常、単一ドメインへの接続数を少ない数に制限します(ほとんどのブラウザではデフォルトで20未満)。その間、リクエストの多くはブロックされます。

一方、並列化の機会が少ないため、リクエストが大きいほど完全に処理するのに時間がかかります。

理想的には、両方の方法を試して、どちらが最も効果的に機能するかを確認します。

注:2番目の方法では、JSON文字列を手動で処理する代わりに、オブジェクトの配列を作成してから、その配列をJSONとしてシリアル化できます。(JSONはオブジェクトだけでなく配列もサポートしています!)

于 2011-02-08T23:01:40.273 に答える
0

オプション2、bigJsonStringに進みます。数メガバイトの長さのメッセージを問題なく渡すことができます。同じインフラストラクチャを使用して、はるかに大きなhtml、画像、スタイル、スクリプト、およびビデオファイルをインターネット経由で渡します。

于 2011-02-08T22:58:32.480 に答える