Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails observer在开发模式下导致处理时间缓慢_Ruby On Rails_Performance_Ruby On Rails 3.1_Observer Pattern_Asset Pipeline - Fatal编程技术网

Ruby on rails Rails observer在开发模式下导致处理时间缓慢

Ruby on rails Rails observer在开发模式下导致处理时间缓慢,ruby-on-rails,performance,ruby-on-rails-3.1,observer-pattern,asset-pipeline,Ruby On Rails,Performance,Ruby On Rails 3.1,Observer Pattern,Asset Pipeline,我使用的是Rails 3.1.1,我注意到我的应用程序在开发模式下变得非常慢(15秒)。请参见下面我的firebug“Net”列表: 我做过很多事情,比如: 减少宝石的数量 打开类缓存 将资产调试设置为false 实现资产压缩 安装rails dev boost gem 也许有一些改进,但没有什么能帮助它在运行localhost时达到我预期的速度。也就是说,直到我在application.rb中注释掉我的Observators配置行: config.active_record.observ

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

我做过很多事情,比如:

  • 减少宝石的数量
  • 打开类缓存
  • 将资产调试设置为false
  • 实现资产压缩
  • 安装rails dev boost gem
也许有一些改进,但没有什么能帮助它在运行localhost时达到我预期的速度。也就是说,直到我在
application.rb
中注释掉我的Observators配置行:

config.active_record.observers = :item_observer, :loan_observer, :friendship_observer, :message_observer, :user_observer
然后,应用程序的加载时间又变快了(~1秒)。现在查看firebug列表:

其他说明:

  • 在Heroku上制作时,速度很快(约1秒),正如您所预料的
  • 我正在使用postgresql和Thin;我没有尝试使用其他数据库来查看是否存在此问题
  • 当我只注释掉最后一个观察者user_observer时,加载时间减少了大约一半
  • development.log
    中打印的加载时间不反映实际加载时间。资产被标记为304未修改(0ms),它们确实需要一段时间才能加载
  • 是的,我正在使用资产管道

黄金问题:注册观察者的简单行为是否会导致资产加载缓慢?对此可以做些什么?

我解决这个问题的方法是将观察者重构为关注点

看一看

Rails正在开发模式下运行所有准备每个链轮资产请求上的挂钩。这包括自动(重新)加载代码,以及各种gem在其中执行工作。在你的情况下,观察员正在注册(我相信这会导致Rails引用你应用程序的大部分,以便引用模型)


rails-dev调整了禁用任何资产请求的准备和重新加载功能(以及其他一些功能-阅读其自述文件的第一部分)。对于任何规模合适的项目,都可以大大提高开发环境的速度。它还可以配置为对您喜欢的任何其他请求执行此操作

我想在这个问题上添加“观察员是否被认为是rails中的良好实践?”感谢您的回答!我必须承认我不熟悉这些担忧。。。老实说,甚至对何时使用模块有很好的理解。你能给我指出一些关于这些主题的有用资源吗?非常感谢!