2011-09-16 20 views
2

メインページリクエストに加えて、サーバーへの3つの別々のAJAXリクエストを生成するZend FrameworkベースのWebアプリケーションがあります。これは、Webサーバーに大きなパフォーマンスの低下を引き起こしています。jQueryのAJAXリクエストとZend Frameworkのマージ

3つのAJAXリクエストをすべて私のZend Frameworkアプリケーションで受信し、3つの別々のリクエストとしてアクションスタックで処理できる1つのリクエストにまとめてみてください。

ツール/テクニックや落とし穴に関するご意見は歓迎します。私の頭の上から

答えて

2

  • 要求スタックやキュー(JS配列)
  • を構築するには、含むAJAXリクエストを送信ス​​タックを要求する代わりに、AJAXリクエスト
  • をオフに発射する要求を送信しますアレイサーバ側を介して、要求スタックアレイ
  • ループとなるであろう命令

に従うsomethi ajaxリクエスト用のミニジョブスタック/キューのようです。

+0

私はZend Frameworkビューヘルパーを使用して、予想されるAJAX要求の数をカウントしています。 jQueryで前に$ .GETまたは$ .POSTと呼ばれていたコードでは、各リクエストをスタック(js配列)に保持する独自のjQueryプラグインを呼び出しています。スタック内のリクエストの数がビューヘルパーで指定された数と一致すると、Zend Framework Ajaxコントローラに1回のリクエストを送信し、各リクエストを順番に解析します。問題は、これらのAJAX呼び出しの中には、データを返送する必要があることです。関連するリクエストに一致するデータを渡す最も良い方法は何ですか? – Richard

+0

もう一度バンドルして、配列にマークしておきます。そして、プラグインは配列をソートし、応答をさらにルーティングします。あなたのプラグインは、基本的にリクエストルータのように機能します。したがって、プラグインに送信するリクエストごとにIDが取得され、大きなレスポンス配列では、IDによるサブレスポンスを見つけ出し、必要な処理を実行できます。 – markus

0

私はMarkusのアドバイスを取り、2つのjQueryプラグインを作成しました.1つはリクエストをキューに入れ、もう1つはポスティング用です。

Zend Frameworkアプリケーションは要求を受け取り、JSONエンコードされてクライアントに返される汎用レスポンスオブジェクトに戻りデータを追加して、各要求を繰り返します。

var count = 0; 
var requests = new Array(); 

// Add AJAX requests to the queue 
(function($){$.fn.addAjaxRequest=function(callback, ajaxArgs, initialArgs) { 
     requests[count] = [callback, ajaxArgs, initialArgs]; 
     count++; 
    } 
}) 
(jQuery); 

// Send the queued AJAX requests to MVC 
(function($){$.fn.postAjaxRequests=function(host) { 
     var response = null; 
     var url = 'http://' + host + '/ajax/process-ajax-requests'; 
     $.ajax({ 
      type: 'POST', 
      url: url, 
      dataType: 'json', 
      async: false, 
      data : ({data : requests}), 
      success: function(data) { 
       response = data; 
      } 
     }); 
     return response; 
    } 
}) 
(jQuery); 
関連する問題