ruby on rails
几个月以来,我一直在开发应用程序。我使用默认WEBrick
服务器来运行应用程序。而且我发现当我在development
andproduction
模式下启动 WEBrick 服务器时,服务器的运行速度production mode
比development mode
.
这背后有什么具体原因吗?有人可以解释一下吗?
ruby on rails
几个月以来,我一直在开发应用程序。我使用默认WEBrick
服务器来运行应用程序。而且我发现当我在development
andproduction
模式下启动 WEBrick 服务器时,服务器的运行速度production mode
比development mode
.
这背后有什么具体原因吗?有人可以解释一下吗?
在开发模式下,类不会被缓存,因此 Rails 每次刷新时都会重新加载所有类。此外,资产编译不会在开发中完成(默认情况下),因此 Rails 每次刷新时都会重新加载所有资产(CSS、Javascript 等)。
在生产模式下,服务器将代码加载到缓存中,这使事情变得更快。但是,在开发模式下并非如此(因为您不想每次进行更改时都重新启动 webrick)。每个请求都会再次加载相应的代码,这需要一些时间。
最耗费时间的是资产管道。在生产中,您可能会在一两个请求中获得资产的编译版本(javascripts 和 css)。在开发中,您将它们拆分,以进行调试(当然,基于您的环境设置)。而且由于浏览器不会同时处理所有请求,因此某些资产会在其他资产完成加载后加载。您可以使用例如 firebug 的网络控制台来观察这种行为。这意味着:您拥有的资产越多,页面在开发模式下加载的时间就越长。
区别在于 2 个环境。在 Rails 中,有几种环境。每个人都有自己的数据库配置和 Rails 选项。
您可以使用 Rails.env 变量对特定环境进行一些不同的更改。
默认情况下,开发环境没有所有缓存并激活自动重新加载。生产环境带有所有缓存。
但是,如果您愿意,您可以制作类似开发的生产环境或类似生产的开发环境。
您也可以添加一些新的特定环境。
创建新环境:
假设您要创建 hudson 环境。
Create a new environment file in config/environments/hudson.rb.
您可以先克隆一个现有的,例如 config/environments/test.rb。在 config/database.yml 中为您的环境添加一个新的配置块。就这样。
现在你可以启动服务器了
ruby 脚本/服务器 -e hudson
运行控制台
红宝石脚本/服务器哈德森
等等。