2010-11-21 23 views
9

かなり大規模なJavaScriptベースのアプリケーションを作成しており、AJAXリクエストが8回も発生することがあります。これはIE6の問題です。これは残りのリクエストを殺してしまいますが、私は知っていますが、このアプリケーションは現代のブラウザを対象としているため、IE6は問題ではありません。複数の同時AJAX接続が多すぎるのですか?

ただし、プーリングリクエストによってパフォーマンスが向上すると感じています(実際のプロファイリングは行っていません)。一度に最大4つのリクエストをしてください。

私の質問は、AJAXリクエストをプールするメリットがあるか、複数のリクエストを同時に処理するプールと比べて、複数のリクエストを同時に処理できることですか?

これはブラウザとインターネット接続によって異なる場合がありますが、それについてはわかりません。

答えて

15

IE6はあなたの唯一の問題にはなりません。他のブラウザーは同じサーバーへの同時要求数を制限します。そのようデフォルトを書くと言うHere's a good roundupはあった:

Browser   HTTP/1.1 HTTP/1.0 
-------   -------- -------- 
IE 6,7   2   4 
IE 8    6   6 
Firefox 2   2   8 
Firefox 3   6   6 
Safari 3,4  4   4 
Chrome 1,2  6   ? 
Chrome 3   4   4 
Opera 9.63  4   4 
Opera 10.00alpha 4   4

それはさておき、その記事から他の二つの重要な引用符:

それは別の制限を使用するには、ブラウザを再設定することが可能です。 IE8が自動的にダイヤルアップ接続のユーザーのためのサーバあたり2つの接続に低下することが

注意。

...あなたが知っている限り、他の最新のブラウザでも、次の「ドット」リリースでそうすることができます。

可能であれば、長年オープンしている接続の数を最小限に抑えてください。間違いなく、1つ以上の接続を長時間オープンにしないでください。

個々の、素早い接続をしているだけで、時には束縛されているのであれば、ブラウザに頼るのではなく、自分でシリアル化することをお勧めします。実行する必要がある要求を表すオブジェクトのキューを用意し、それらを実行するコードを作成します(一度に1つずつ)。

+1

はい、接続の量を制限することはいつも起こりますが、リクエストを待つ最新のブラウザとは異なり、IE6は文字通りAJAXリクエストを殺します。 – Tower

+0

それで、4番目以降のリクエストが「保留中」になり、他の終了後に続行するプールを実装することをお勧めしますか? – Tower

+1

@rファクター:プール、キューではありません。開いているコネクションを実際に再利用している場合を除き、Cometスタイルです。そして私はおそらく一度に一つの未処理のリクエストしか許可しないでしょう(私の編集を見てください)。 –

9

too manyは常に不良です。

AJAX最適化in this articleについて詳しくは、こちらをご覧ください。

+7

*「あまりにも多くはいつも悪い」* LOL!優れた意味論的ポイント。 –

1

上記の回答に記載されているブラウザによっては、はいです。場合によっては、時間順に要求を送信するためにキューに入れられていない場合、ajax POST要求の戻り情報をロードしようとしている間違った要素に返される情報が混在する特定のシナリオがあります。

+0

あなたは正しいです。あなたの 'success()'関数は、応答が受信された順序で連続して呼び出され、追加された順序では呼び出されません。それは確かに非常に奇妙に見ることができます。 –

+0

jQuery Ajaxロード関数を使用することができ、順序に関わらず処理がうまくいくように見えます。 – MattOlivos

関連する問題