2016-05-05 199 views
3

我有一個rails項目。 我在一個控制器中有很奇怪的事情:瀏覽器需要大約3分鐘後負荷頁,但Rails的日誌中寫道:Rails:頁面加載時間很長

Completed 200 OK in 20563ms (Views: 17144.2ms | ActiveRecord: 324.4ms) 

我知道21秒這是很長的時間,但它不是3分鐘。 Data from a browser

我知道這個數據不夠,但我不期望完整的答案只有一個指針哪裏是麻煩。 這個頁面的大小約5 Mb。

+0

您是否在使用CDN爲您的網頁上的資產提供服務?你是否也在本地看到這種行爲?大部分圖片是來自其他網站還是存儲在您的資產管道中? –

+0

在Chrome開發人員控制檯中發佈「網絡」選項卡的屏幕截圖,以便我們可以清楚地看到哪個請求需要多長時間。 –

+0

還要確保你沒有做'n + 1'風格的查詢。當您在模板視圖中調用關聯時,這是一個簡單的錯誤。 – Jeff

回答

0

正如您所看到的,大部分時間都花在「閒置」階段。這包括加載頁面上所有資源(圖像,樣式表,JavaScript等)的時間。因此,您的HTML頁面將在10秒內加載並呈現,但剩下的時間用於下載頁面中的所有資源。

這可能是某個服務器上託管的單個資源,它對響應您的請求的響應速度很慢。因此,即使你已經加載了所有的內容,但你有一個谷歌託管的jquery文件在那裏,並且互聯網連接性很差,那麼你會看到「空閒」佔用大量時間。

但是,就你而言,它看起來像5MB頁面上的一些圖像。

+1

感謝您的回答,但5Mb它只是來自Rails服務器(非常大的表格)的數據。我注意到:在rails在日誌中寫入完整消息之後,在瀏覽器接收日期之前,ruby進程佔用處理器的50%。我想可能是中間件方面的一個問題。 – kunashir

+0

也許你有一個雙核處理器,而Ruby正在佔用你100%的CPU時間。這可能是一些處理響應的中間件,但是您可以在生成時通過[流式傳輸頁面](http://api.rubyonrails.org/classes/ActionController/Streaming.html)優化頁面渲染,而不是等到它全部呈現,然後才發送給客戶端。 – Uzbekjon

0

延遲可能是由config/environments/development.rb中的config.assets.debug = true造成的。將其設置爲false可能會解決您的問題。

通過這樣做,源文件組合在一起和源地圖將不會 工作(例如,如果使用的Sass /咖啡,你不會看到它在devtools)

0

我發現了一個問題後,漫長的搜索。 對於主對象加載許多相關對象的數據庫來說,這是不必要的查詢。但我不明白爲什麼它需要這麼多時間(也許GC清理它混亂)。

相關問題