這兩者之間有什麼重大區別?我還沒有看到一個解釋主要區別是什麼的文檔?性能??爲什麼使用生產開發軌道應用程序
回答
即使兩者看似表面相似,「發展」和「生產」操作模式之間也存在顯着差異。
在開發模式中,app/
和config/routes.rb
中的任何文件都會重新加載每個請求。這可能需要相當長的時間來處理,但具有根據對代碼庫的任何更改生成最新響應的優勢,這在開發環境中可能正在進行。由於生產環境不應該在部署之間改變,Rails會緩存你的控制器,視圖,路由,助手和模型以獲得最佳性能。對源的任何更改都需要重新啓動應用程序。
開發的另一個特性是Rails日誌記錄級別設置爲debug
,它儘可能詳細。您不僅可以詳細瞭解所有SQL調用的細節,還可以獲得次要警告和其他信息消息,否則這些消息會在生產中被忽略。這種日誌記錄對性能有很大的影響,除非您嘗試診斷問題,否則不應在生產環境中使用。這些日誌文件非常快速地變得非常大,並且在不重新啓動Web服務器進程的情況下很難旋轉它們。
在開發環境中還有一種方法可以從異常中解救出來,並將它們呈現爲人類可讀的錯誤報告。這對於調試非常有用,但是在生產環境中可能會暴露有關應用程序的敏感細節,因爲它通常包含大量關於文件系統,關鍵參數等的信息。這絕不應該在生產站點上啓用。
這些差異可能並不明顯,但您只需比較config/environments/development.rb
和config/environments/production.rb
中的配置設置即可。不幸的是,有些默認設置並不明顯,因爲它們在這些文件中有時並未明確表達出來,但基本常常在那裏。
緩存&錯誤處理。
隨着緩存,是否有顯着的性能提升?可以說,我的網頁不是靜態的,而是從某種意義上來說非常具有活力,這仍然是有益的嗎? – user385948 2010-11-10 19:32:56
所有應用程序代碼將在請求之間緩存,因此不必在每個請求上進行解析。這就是爲什麼您可以對文件進行更改並在開發環境中獲得即時更改的原因,而不是在生產環境中。在兩種環境中加載應用程序並比較相同請求的Web Brick輸出,您將看到執行時間的差異。 – 2010-11-10 20:02:14
在Rails生產環境中,您的應用程序代碼被緩存,因此解釋器在每次調用方法時都不必重新加載類。你的應用程序基本上存儲在內存中。這提供了明確的速度改進。
此外,默認情況下它的記錄功能少得多;例如,生產日誌不包含像開發日誌那樣的每一個SQL調用。
- 1. 爲Windows開發應用程序:使用什麼開發平臺?
- 2. 軌道環境的mixup,開發服務器使用生產DB
- 3. 軌道應用程序在生產不工作
- 4. 我應該知道什麼來開發p2p小應用程序
- 5. 使用Git的Web應用程序開發/生產設置
- 6. 什麼使用JavaScript爲Android開發應用程序?
- 7. 爲什麼在iOS應用程序開發中使用@property
- 8. 開發軌道引擎和使用資產管道
- 9. Rails應用程序認爲它在開發環境中生產
- 10. 在生產Java應用程序中使用JMX監視什麼?
- 11. 開發跨平臺移動應用程序需要使用什麼產品?
- 12. 爲什麼不能我couchapp產生新的應用程序?
- 13. 爲什麼我laravel應用程序總是在生產心情
- 14. 當應用程序從後臺打開時會發生什麼?
- 15. 無擴展錯誤:默認情況下,軌道使用jQuery開發jquery.min生產
- 16. 只使用開發的MySQL數據庫,不測試或生產的軌道
- 17. 預編譯的資產在生產軌道4,5的應用
- 18. 適用於iOS的開發和生產應用程序(使用Facebook SDK)
- 19. 集成的Java Web應用程序從開發到生產
- 20. 從開發APEX應用程序遷移到生產?
- 21. 控制web2py開發,qa和生產應用程序集成
- 22. 參考開發目錄的生產應用程序
- 23. 角碼應用程序與碼頭 - 生產與開發
- 24. 開發,分段和生產環境rails應用程序
- 25. 生產ASP.net應用程序比開發慢
- 26. RoR應用程序運行在雜種開發但未生產
- 27. 面向iOS應用程序的開發和生產
- 28. trigger.io應用程序的開發和生產配置
- 29. 將開發django應用程序導出到生產
- 30. 開發和生產版本的一個應用程序
完美!現在,如果我想在生產中打開調試模式WHILE,我還可以將它設置爲DEBUG嗎? – user385948 2010-11-10 20:29:23
您可以在'production.rb'中調整日誌記錄級別,但在完成後請小心將其關閉。它以每小時多GB的速度增長並不罕見。 – tadman 2010-11-10 22:24:13