2009-06-24 355 views
4

客戶端Ajax Javascript代碼使用XMLHttpRequest發送POST請求,但我得到0.5秒的延遲獲取響應,我試圖找出原因,因爲我會喜歡它更快,更像是0.2秒。兩個端點位於同一個Intranet中,客戶端通過以太網直接連接,服務器使用802.11b。POST回覆花費太長時間

使用Wireshark的我聞以下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 2009-06-24 23:45:39

回答

0

首先強烈建議您將這個寶石添加到您的開發組寶石中您的gem文件中。

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

它允許您在實現AJAX請求或任何類型的Web瀏覽器請求時跟蹤時間事務。另外請記住,Webrick(Rails使用的默認開發服務器)是一個非常緩慢的開發服務器,所以如果我可以推薦您使用Puma作爲開發服務器,並使用Unicorn作爲生產服務器。

另外,你真的需要使用Rails控制器來管理這些請求嗎?這類項目的一個很好的實現是使用中間件。它仍然是ruby代碼,但它不會加載所有Rails功能,使響應速度更快。你可以在http://railscasts.com/episodes/319-rails-middleware-walkthrough找到更多的信息

問候。