gpt4 book ai didi

ruby-on-rails - Rails 观察器导致开发模式下处理时间缓慢

转载 作者:行者123 更新时间:2023-12-03 00:26:02 25 4
gpt4 key购买 nike

我使用的是 Rails 3.1.1,我注意到我的应用程序在开发模式下变得非常慢(15 秒)。请参阅下面的我的 Firebug “Net”列表:

Before!

我做了很多事情,例如:

  • 减少 gem 数量
  • 打开类缓存
  • 将 Assets 调试设置为 false
  • 真正实现 Assets 压缩
  • 安装rails-dev-boost gem

也许有一些改进,但没有任何东西可以帮助它在本地主机上运行时达到我预期的速度。也就是说,直到我在 application.rb 中注释掉我的观察者配置行:

config.active_record.observers = :item_observer, :loan_observer, :friendship_observer, :message_observer, :user_observer

然后应用程序的加载时间再次加快(约 1 秒)。现在查看 Firebug 列表:

After!

其他说明:

  • 在 Heroku 上进行生产时,速度很快(约 1 秒),正如您所期望的。
  • 我正在使用 postgresql 和 Thin;我没有尝试使用其他数据库来查看是否存在此问题。
  • 当我仅注释掉最后一个观察者 user_observer 时,加载时间下降了大约一半。
  • development.log 中打印的加载时间并不反射(reflect)实际加载时间。 Assets 被标记为 304 Not Modified (0ms),他们确实需要一段时间才能加载。
  • 是的,我正在使用 Assets 管道

黄金问题:注册观察者的简单行为是否会导致 Assets 加载缓慢?对此我们能做些什么呢?

最佳答案

看看https://github.com/wavii/rails-dev-tweaks .

Rails 在开发模式下对每个 Sprockets 资源请求运行所有 to_prepare Hook 。这包括自动(重新)加载代码之类的事情,并且各种 gem 也在其中执行工作。在你的例子中,观察者正在被注册(我相信这会导致 Rails 引用你的应用程序的很大一部分来引用模型)

rails-dev-tweaks 禁用 to_prepare 和重新加载任何 Assets 请求(以及其他一些 - 阅读其自述文件的第一部分)。对于任何规模适当的项目,都可以极大地加快您的开发环境。还可以配置为您喜欢的任何其他请求执行此操作

关于ruby-on-rails - Rails 观察器导致开发模式下处理时间缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com