ari*_*kfr 6 ruby performance gem ruby-on-rails bundler
当Rails启动时,它会预加载所有依赖项(gems),这会导致启动时间非常慢.在我正在进行的中型项目中,Rails的开始时间为10-15秒取决于机器.
虽然这不是生产中的问题,但这是一个巨大的发展痛苦.特别是在工作TDD/BDD时.有加速测试的解决方案(如spork),但它们引入了自己的问题.
我的问题是:为什么不在每个代码文件中需要所需的依赖项,而不是在启动时预加载所有内容?
手动要求的缺点是什么?额外的代码行?
Rails 不是 PHP。某些资源是自动加载的,但您可能需要的所有资源都会在启动/初始化时加载,因为最好在发出请求之前加载,以便应用程序做好准备,而不是根据请求延迟加载它们,从而减慢速度放下第一个请求。很多最后一刻的动态定义方法和类加载仍然会发生,将加载时间减少到仅仅10-15 秒,但如果将加载时间减少 5-10 秒,它\只是附加到第一个请求上。不好,对吧?
\n\n您经历的大部分加载时间都在添加到项目中的 gem/插件/库中。许多重要的大小都提供了仅加载您需要的部分的方法,还有更多的可以使用这种优化。例如,如果您有一个不需要 Active Record 的 Rails 项目,您可以替换:
\n\nrequire \'rails/all\'\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6 与:
\n\nrequire "action_controller/railtie"\nrequire "action_mailer/railtie"\nrequire "active_resource/railtie"\nrequire "rails/test_unit/railtie"\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6application.rb可以减少加载(并避免有关数据库不存在的错误)。
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |