2009-06-24 13 views
4

クライアント側のAjax JavascriptコードはXMLHttpRequestを使用してPOSTリクエストを送信していますが、応答を取得するのに0.5秒遅れているようですが、理由を調べようとしています。それはより速く、より多くの0.2秒のように。両方のエンドポイントは同じイントラネットにあり、クライアントはイーサネット経由で直接接続され、サーバーは802.11bを使用して直接接続されます。 Wiresharkのを使用してPOST応答が長すぎます

は、私は、次のTCPトランザクションを嗅い:

 
Time(ms)  From   To    Info 
------------------------------------------------------------------------ 
0.0   client  server   [SYN] 
11.7   server  client   [SYN,ACK] 
11.8   client  server   [ACK] 
12.0   client  server   [POST] 
12.1   client  server   Continuation 
39.0   server  client   ACK 
46.0   server  client   ACK 
150.0  server  client   TCP segment of reassembled PDU 
311.0  client  server   ACK 
324.0  server  client   HTTP/1.1 200 OK (text/html) 
512.0  client  server   ACK 

実際のポストと応答は本当に短いです。基本的にはPOSTリクエストの内容は次のとおりです。

cmd=getCurXY&chan=CH_L_JX 

そして、私は今送信てること応答の内容は単純です:

cmd=noresponse 

応答がTransfer-Encoding: chunkedとして送信されています。

この取引は何らかの方法でスピードアップできますか?
なぜ半分の時間が必要ですか?

+2

いくつかのコードを含める必要があります – stevedbrown

+0

イーサネット経由で直接接続しようとしましたか? TCPスタックがパケットを断片化するのは奇妙に思えます - MTUが誤って構成されていますか? – qdot

答えて

0

Firstableこのgemをgemfileの開発グループの宝石に追加することを強くお勧めします。

group :development, :test do 
    gem 'rack-mini-profiler' 
end 

これにより、AJAXリクエストやWebブラウザからのリクエストを実装しているときの時間トランザクションを追跡できます。また、Webrick(Railsで使用されているデフォルトの開発サーバ)は非常に遅い開発サーバなので、開発サーバとしてPumaを使用し、プロダクションとしてUnicornを使用することをお勧めします。

また、本当にこれらの要求を管理するためにRailsコントローラを使用する必要がありますか?このようなプロジェクトのための非常に優れた実装は、ミドルウェアを使用することです。それはまだルビーコードですが、すべてのRails機能を読み込んでも応答が速くなるわけではありません。詳しい情報はhttp://railscasts.com/episodes/319-rails-middleware-walkthrough

です。

関連する問題