簡體   English   中英

在記錄200 OK之后,Rails會做什么? (調試響應時間慢)

[英]What is Rails doing after it logs 200 OK? (Debugging slow response time)

我正在嘗試在Ruby on Rails應用程序中調試非常慢的請求調用。 我已經按照自己的喜好優化了控制器方法,Rails的日志告訴我它已在XX毫秒內完成了操作( Completed 200 OK in 5049ms (Views: 34.9ms | ActiveRecord: 76.3ms)毫秒內Completed 200 OK in 5049ms (Views: 34.9ms | ActiveRecord: 76.3ms) )。 但是,在加載頁面時,此消息會在瀏覽器中實際呈現任何內容之前打印很久 長達約15秒的等待時間。 Rack mini-profiler確認了這一點,並告訴我GET操作(不計算完成控制器操作所花費的時間)大約需要14秒。 (探查器還確認控制器動作的執行時間約為5秒)。

我可以用5秒鍾左右的時間來完成控制器的動作,因為我可以對代碼的各個部分進行基准測試,並清楚地看到什么很慢以及為什么。 關於這種神秘的滯后時間為何存在,我完全感到困惑。 到底在做什么

資產

主要原因可能是資產加載。 您是否在開發環境中? 默認情況下,資產不會預先編譯(我相信資產緩存也處於關閉狀態)

也許您看不到關聯的GET請求,因為您使用的是“安靜資產” gem。 看到所有對資產的GET請求(javascript / css)后,我感到非常疲倦,以至於將這個gem放入我的Gemfile中並忘記了一段時間。 但是接下來還有很多事情要做。

服務資產可能非常長。 例如,我正在使用一些jquery ui,一開始我是在application.js調用//require jquery.ui.all 事實證明,它實際上只是為jquery.ui發送了數十個文件。 而且即使文件很小且提供服務的速度非常快,連續的GET請求/回復之間也會有一些延遲,這是導致我的localhost / development中的應用程序響應時間過慢的原因

您不想在開發中預編譯資產,但是可以擺脫無用的資產(如果使用的是jquery,則很可能只需要幾個文件,而不是全部)

在預編譯資產的情況下,我的服務器在測試/生產中的響應時間快10-100倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM