为什么WEBrick服务器在生产模式下更快而不是在开发模式下? + Rails

时间:2013-01-23 09:53:39

标签: ruby-on-rails webrick

自从几个月以来,我一直在开发ruby on rails应用程序。我使用默认的WEBrick服务器来运行应用程序。我发现当我以developmentproduction模式启动WEBrick服务器时,服务器对production mode的速度比对development mode的速度更快。

背后有什么具体原因吗?有人可以解释一下吗?

3 个答案:

答案 0 :(得分:3)

在开发模式下,类不会被缓存,因此每次刷新时Rails都会重新加载所有类。此外,资产编译不是在开发中完成的(默认情况下),因此每次刷新时Rails都会重新加载所有资产(CSS,Javascript等)。

答案 1 :(得分:3)

在生产模式下,服务器将代码加载到缓存中,这样可以快速完成任务。但是,在开发模式中并非如此(因为每次进行更改时都不想重新启动webrick)。每个请求都会再次加载相应的代码,这需要一些时间。

大部分时间都是资产管道。在生产中,您可以在一两个请求中获得资产的编译版本(javascripts和css)。在开发过程中,您可以将它们分开,以进行调试(当然,基于您的环境设置)。并且因为浏览器不能同时处理所有请求,所以在其他资源加载完成后会加载一些资源。您可以使用以下方法观看此行为firebug的网络控制台。这意味着:您拥有的资产越多,在开发模式下加载页面的时间就越长。

答案 2 :(得分:1)

区别在于两种环境。在Rails中,有几种环境。每个都有自己的数据库配置和Rails选项。

您可以使用Rails.env变量对特定环境进行一些不同的更改。

默认情况下,开发环境没有所有缓存并激活自动重新加载。生产环境包含所有缓存。

但是如果你想要,你可以创建像生产这样的开发或开发环境的生产环境。

您也可以添加一些新的特定环境。

创建新环境:

假设你想创建哈德森环境。

Create a new environment file in config/environments/hudson.rb. 

您可以先克隆现有的一个,例如config / environments / test.rb。     在config / database.yml中为您的环境添加新配置块。     就是这样。

现在你可以启动服务器了

ruby​​ script / server -e hudson

运行控制台

ruby​​脚本/服务器hudson

等等。