2012-04-17 17 views
0

同時に(Ajax経由で)2つのスクリプトを照会する必要があります。2人の同意Ajaxリクエストが遅い、1つのクイック、両方が同時に終了する

私は本当に素早く、いくつかのhtmlを表示し、2番目はWebServiceを使っていくつかのクエリを実行していることを確かに知っています。

クイックリクエストは、常に最初のリクエストの後に送信されます。しかし、すべての私の試みでは、速い/速いものは、遅いものの前に決して完了しません。

最初の長いAJAXリクエストを呼び出すためのコード使用:

$.ajax({ 
     type: "POST", 
     url: '/fr/ajax_flight_get_other_oneway', 
     cache: false, 
     dataType: 'json', 
     success: function(data) { 
      // some treatment 
     } 

第二のコードより高速なAJAXリクエスト:

$.ajax({ 
     type: "POST", 
     url: '/fr/load_back_forflight?id=SN4422_23', 
     cache: false, 
     data: "comps="+compSelectedCodes+"&escale="+escale, 
     dataType: 'json', 
     success: function(data) { 
      // some treatment 
     } 

は、それが変更されるべきであるApacheでのものですかそれはありますjQueryで?

+0

jQuery does not not queue requests。そのWebサイトのリクエストを処理するために、Apacheで聴いている作業者が1人しかいないようです。 – Matt

答えて

1

私は私の問題への解決策を見つけ、それがセッションにリンクされました。

セッションはファイルシステムに基づいていました。したがって、最初の(長い問合せ)はセッション・ファイルをロックし、次に2番目の問合せは長い問合せが完了するまで待たされます。

DBでセッションを使用して問題を解決しました。

あなたのおかげでありがとう

0

速いものの成功コールバックに遅いものを入れます。これにより、高速要求が最初に完了してから2番目の要求が開始されることが保証されます。

0

ブラウザは、HTTPヘッダーキープアライブを使用して、両方で同じHTTP接続を使用することにしたため、キューに入れられたように見える可能性があります。これはjQueryのことではありません。ブラウザが行うことができることです。

ブラウザのHTTPネットワークトラフィックデバッガを使用して確認します。

ウェブサーバーがクライアントごとに1つの接続しか許可しておらず、キューに入れている可能性があります。これを試してみてください

How do I configure Apache2 to allow multiple simultaneous connections from same IP address?

0

:これを参照してください

$.ajax({ 
    type: "POST", 
    url: '/fr/ajax_flight_get_other_oneway', 
    cache: false, 
    dataType: 'json', 
    success: function(data) { 
     // some treatment 
     //The code for the second faster ajax request: 
     $.ajax({ 
      type: "POST", 
      url: '/fr/load_back_forflight?id=SN4422_23', 
      cache: false, 
      data: "comps=" + compSelectedCodes + "&escale=" + escale, 
      dataType: 'json', 
      success: function(data) { 
       // some treatment 
      } 
     }); 
    } 
});​ 
関連する問題