2012-01-20 27 views
28

JavaScript/jqueryで作成されたカスタムコントロールでツリーを作成しています。ブラウザへの応答の最大jsonサイズ

ツリーを作成するために、jsonオブジェクトをJavaスクリプトへの入力として提供して、ツリーを反復してツリーを作成します。

データ量が最大25Kノードになる可能性があるためです。基本的な負荷テスト中に、ブラウザがそのような量でクラッシュすることが確認されました。

代替ソリューションは、ノードの第1レベルをロードするだけで、AJAXリクエストを介してオンデマンドで負荷をかけます。第1レベルのボリュームは500〜1Kノードまで変化する可能性があります。

jsonがサーバーからの応答として持つ必要がある最大サイズは何ですか。ブラウザ上でこのような大量のデータを処理するための最良の方法は何でしょうか。

+0

サイズ制限はありません。私は完了までに5秒かかったAjaxリクエストを処理しました。 – riship89

+1

@ hrishikeshp19だから、私もいますし、500バイト分のデータしかありませんでした...あなたの時間的定量化にはサイズの限界はありますか? – Jeach

+0

私はいつも限界があると思っていたので、非常に単純なAjaxループを走らせて、PHP/ApacheスクリプトにURLリクエスト(右に送った)を送り、各ループの1文字ずつ 'データペイロード'を増やしました。データサイズが「8097バイト」に達すると、「414(Request-URI Too Large)」というメッセージがサーバーから受信されました。あなたがGoogleであれば、あなたは414エラーの詳細を見ることができます。これはWikiページです:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes – Jeach

答えて

13

http応答の最大サイズ(またはIntの最大サイズまたはブラウザの制限またはサーバの制限が設定されている)はありません。

最良の方法は、AJAXを使用してデータの一部を表示する必要があるときに読み込むことです。

+8

TherはいくつかのブラウザでJsonが評価される方法に依存します。モバイルサファリはjsonをeval()するのではなく、10MBより大きい場合 –

+0

@ckuetbachブラウザに制限がある場合はそうです。 – xdazz

+1

[サーバーの最大サイズ](http://forums.asp.net/t/1090853.aspx/1)も同様に注意してください。 – ruffin

7

HTTP応答にはサイズの制限はありません。 JSONがHTTPレスポンスとして来ています。したがって、サイズ制限もありません。

JSONレスポンスから解析されたオブジェクトが多すぎるメモリを消費すると問題が発生する可能性があります。それはブラウザをクラッシュさせます。したがって、異なるデータサイズでテストし、アプリが正しく動作するかどうかを確認する方が良いです。

私は遅延ロードは、このような大量のデータに最適なアプローチだと思います。特にオブジェクトリテラルを扱う場合。

High Performance Ajax Application Yahoo!からのプレゼンテーションを参照してください。

3

よく私は私の2セントを与えるには遅すぎると思います。補完するshiplu.mokadd.imの回答ブラウザのメモリには限界があり、HTTP応答はTCP仕様にしたがって任意の量のデータを持つことができます。

しかしGoogle Chrome(バージョン29.0.xx)とJettyサーバーを使用するアプリケーションでは、Jettyサーバーの応答が335MBになります。ブラウザがそのサイズの応答を受信して​​いる間に、Chromeは「IPCメッセージが大きすぎます」というメッセージを残しません。これはGoogle Chrome(他のブラウザについてはわかりません)に固有のものですが、応答の最大サイズにはしきい値があるはずです。

関連する問題