Ruby on Rails的灵活性/性能?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我现在已经使用了PHP一段时间,并且使用了CodeIgniter,这是一个很好的框架。我开始了一个新的个人项目,上次我正在考虑使用什么(PHP vs ROR)我使用PHP是因为我听到了ROR的可变性问题,特别是在阅读了开发者对此的评论之后。可扩展性在ROR中仍然是一个问题吗?

提问于
用户回答回答于

我们从其他人甚至我们自己看到的大多数性能问题都是在处理ORM层中的性能低下的查询。我们从Rails/ActiveRecord到Rails/DataMapper,最后到Merb/DM,每次迭代都会因为底层框架的原因而获得更多速度。

缓存对性能确实带来惊人的奇迹。不幸的是,我们无法缓存我们的数据。我们的缓存最多可以每五分钟有效无效。我们网站几乎每一个位都是动态的。所以如果/当你不能这样做,也许你可以从我们的经验中学习。

我们必须认真调整数据库索引,确保我们的查询不会做很愚蠢的事情,确保我们不会执行比绝对必要的更多查询等。当我说“非常愚蠢的事情”时,我意味着1 + N查询问题...

#1 query
Dog.find(:all).each do |dog|
   #N queries
   dog.owner.siblings.each do |sibling|
      #N queries per above N query!!
      sibling.pets.each do |pet|
         #Do something here
      end
   end
end

DataMapper是处理上述问题的好方法(它不存在1 + N问题),但更好的方法是使用你的大脑并停止这样的查询:D当你需要原始性能时,大多数ORM图层不会轻松处理极其自定义的查询

用户回答回答于

ROR被用于许多大型网站,但与任何语言或框架,它需要一个良好的架构(数据库缩放、缓存、调优等)来扩展到大量的用户。

ROR有一些小的变化,使其更容易扩展,但不要期望它的扩展性。

扫码关注云+社区