2010-11-10 83 views

回答

8

即使兩者看似表面相似,「發展」和「生產」操作模式之間也存在顯着差異。

在開發模式中,app/config/routes.rb中的任何文件都會重新加載每個請求。這可能需要相當長的時間來處理,但具有根據對代碼庫的任何更改生成最新響應的優勢,這在開發環境中可能正在進行。由於生產環境不應該在部署之間改變,Rails會緩存你的控制器,視圖,路由,助手和模型以獲得最佳性能。對源的任何更改都需要重新啓動應用程序。

開發的另一個特性是Rails日誌記錄級別設置爲debug,它儘可能詳細。您不僅可以詳細瞭解所有SQL調用的細節,還可以獲得次要警告和其他信息消息,否則這些消息會在生產中被忽略。這種日誌記錄對性能有很大的影響,除非您嘗試診斷問題,否則不應在生產環境中使用。這些日誌文件非常快速地變得非常大,並且在不重新啓動Web服務器進程的情況下很難旋轉它們。

在開發環境中還有一種方法可以從異常中解救出來,並將它們呈現爲人類可讀的錯誤報告。這對於調試非常有用,但是在生產環境中可能會暴露有關應用程序的敏感細節,因爲它通常包含大量關於文件系統,關鍵參數等的信息。這絕不應該在生產站點上啓用。

這些差異可能並不明顯,但您只需比較config/environments/development.rbconfig/environments/production.rb中的配置設置即可。不幸的是,有些默認設置並不明顯,因爲它們在這些文件中有時並未明確表達出來,但基本常常在那裏。

+0

完美!現在,如果我想在生產中打開調試模式WHILE,我還可以將它設置爲DEBUG嗎? – user385948 2010-11-10 20:29:23

+1

您可以在'production.rb'中調整日誌記錄級別,但在完成後請小心將其關閉。它以每小時多GB的速度增長並不罕見。 – tadman 2010-11-10 22:24:13

2

緩存&錯誤處理。

+0

隨着緩存,是否有顯着的性能提升?可以說,我的網頁不是靜態的,而是從某種意義上來說非常具有活力,這仍然是有益的嗎? – user385948 2010-11-10 19:32:56

+1

所有應用程序代碼將在請求之間緩存,因此不必在每個請求上進行解析。這就是爲什麼您可以對文件進行更改並在開發環境中獲得即時更改的原因,而不是在生產環境中。在兩種環境中加載應用程序並比較相同請求的Web Brick輸出,您將看到執行時間的差異。 – 2010-11-10 20:02:14

5

在Rails生產環境中,您的應用程序代碼被緩存,因此解釋器在每次調用方法時都不必重新加載類。你的應用程序基本上存儲在內存中。這提供了明確的速度改進。

此外,默認情況下它的記錄功能少得多;例如,生產日誌不包含像開發日誌那樣的每一個SQL調用。

相關問題