【发布时间】:2011-05-08 02:05:40
【问题描述】:
两者之间有什么主要区别吗?我还没有看到解释主要区别的文档?性能??
【问题讨论】:
标签: ruby-on-rails mongrel
两者之间有什么主要区别吗?我还没有看到解释主要区别的文档?性能??
【问题讨论】:
标签: ruby-on-rails mongrel
“开发”和“生产”操作模式之间存在显着差异,即使两者表面上看起来相似。
在开发模式下,app/ 和 config/routes.rb 中的任何文件都会随每个请求重新加载。这可能需要相当长的时间来处理,但它的优点是可以根据对代码库的任何更改生成最新的响应,这可能是在开发环境中进行的。由于生产环境不应该在部署之间发生变化,Rails 将缓存您的控制器、视图、路由、帮助程序和模型以获得最佳性能。对源的任何更改都需要重新启动应用程序。
开发的另一个特点是 Rails 的日志记录级别设置为debug,这是尽可能详细的。您不仅会获得每个 SQL 调用的详细细分,而且还会收到轻微警告和其他信息性消息,否则这些消息会在生产环境中被忽略。此日志记录对性能有很大影响,除非您尝试诊断问题,否则不应在生产环境中使用此日志记录。这些日志文件很快就会变得非常大,如果不重新启动 Web 服务器进程就很难轮换它们。
在开发环境中还有一种方法可以从异常中拯救出来,并将它们呈现为人类可读的错误报告。这对于调试很有用,但在生产环境中可能会暴露有关您的应用程序的敏感细节,因为它通常包含有关文件系统、关键参数等的大量信息。绝不应在生产站点上启用此功能。
这些差异可能并不明显,但您只需要比较config/environments/development.rb 和config/environments/production.rb 中的配置设置即可。不幸的是,有些默认值是什么并不明显,因为有时在这些文件中没有清楚地表达它们,但基本知识通常都在那里。
【讨论】:
production.rb 中调整日志记录级别,但请注意在完成后将其关闭。它以每小时数 GB 的速度增长并不少见。
在 Rails 生产环境中,您的应用程序代码被缓存,因此解释器不必在每次调用方法时都重新加载您的类。您的应用程序基本上存储在内存中。这给出了明确的速度改进。
此外,默认情况下它的日志记录要少得多;例如,生产日志不像开发日志那样包含每个 sql 调用。
【讨论】:
缓存和错误处理。
【讨论】: