在开发中,当我更改视图,控制器,路径等时,无需重新启动rails服务器,但我们是否需要在生产环境中?它是否在内存中保存了一些东西,以便我们需要重启?
关于我们在Gemfile(Gemfile.lock)中需要的所有Gem文件,当我们运行rails应用程序时加载(或保存到某个地方)的Gems文件,还是按需加载?
答案 0 :(得分:5)
所有视图控制器和路由都在生产中缓存,以加快应用程序的速度。为每个请求重新加载所有这些都是非常糟糕的事情。这取自development.rb:
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the webserver when you make code changes.
config.cache_classes = false
此外,应用程序环境启动时会加载您的gem。通过执行bundle install
将它们安装到您的全局gem目录中。当您部署到另一台服务器时,您还必须对这些服务器执行bundle install
。
答案 1 :(得分:2)
development
服务器可以在每个请求上重新加载代码,视图,控制器和路由,因为您的请求是唯一的请求 - 如果你<,那么开发需要更多时间/ em>必须在更改时重新启动服务器。
但是,所有这些检查都需要重新stat(2)
- 每个文件并检查每个请求的修改时间。这是系统调用的很多。减少系统调用是提高程序运行时和可伸缩性的一种主要方法,因此在production
服务器中优化了“常见情况” - 对相同代码和配置的数百万个请求。但development
服务器的常见情况是更改。