2011-05-07 33 views
1

我有這個遠程鏈接列表。點擊時,兩個div會分別更新。Rails AJAX命令嚴重延遲

_printing.html.erb

<%= link_to printing.name, printing, :remote => true %> 

印刷/ show.js.erb

jQuery('#render').html("<%= escape_javascript(render "render",:printing=>@printing) %>"); 
jQuery('#info').html("<%= escape_javascript(render "info",:printing=>@printing) %>"); 

當點擊一個鏈接,它需要一段時間爲要被替換的div。這個例子在被替換之前需要15秒。我用手錶計時。但日誌講述了一個不同的故事。

Rendered printings/_render.html.erb (22.7ms) 
Rendered printings/_info.html.erb (39.7ms) 
Rendered printings/show.js.erb (73.6ms) 
Completed 200 OK in 978ms (Views: 457.7ms | ActiveRecord: 40.6ms) 

因此,有兩次嚴重的延誤。第一:爲什麼上述數值的總和如此之大? 第二,爲什麼我要等15秒,但日誌告訴我花了不到一秒鐘?

+1

什麼是推到html()?多少數據?它是否是有效的HTML?這就是你的問題所在,而不是生成文件的服務器。 – epascarello 2011-05-07 22:30:41

+1

看看Firebug或類似的工具告訴你 - 也許這不是服務器端的問題。 – 2011-05-07 23:23:31

回答

0

所以這裏有幾種可能性。這可能是延遲問題(Firebug或Safari/Chrome檢查器工具將顯示此問題),JavaScript中的某些問題會減慢事件循環(這不太可能,但可能的是,您可以在JS調試器中單步執行代碼),或者可能是由於Web服務器的性能所致。 1秒的響應時間並不快,日誌視圖只會告訴你部分故事。除了在請求中顯示的時間外,請求可能會被隊列中的其他請求嚴重延遲。開發模式運行單個進程服務器,因此每個請求都必須排隊等待服務。如果你正在運行Webrick,那麼所有的投注在性能方面都是失敗的,但是通過安裝雜種或瘦身很容易解決。

爲了更好地瞭解應用程序的性能,請安裝newrelic gem,它提供了一個非常全面的開發模式視圖,以查看應用程序花費的時間。