自从几个月以来,我一直在开发ruby on rails
应用程序。我使用默认的WEBrick
服务器来运行应用程序。我发现当我以development
和production
模式启动WEBrick服务器时,服务器对production mode
的速度比对development mode
的速度更快。
背后有什么具体原因吗?有人可以解释一下吗?
答案 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
等等。