如何使用45+查询加快页面速度

时间:2010-09-20 20:58:38

标签: ruby-on-rails

您将如何处理复杂的网页,其中您必须显示一个具有大量关系的用户帐户(15+)

翻译数据保存在不同的表格中(globalize2 / 3),因此查询数量增加到30 +。

放置ACL和一些日志记录,你有时会得到45个以上的查询65 +

我不想在多个屏幕上拆分页面在一个屏幕上需要所有数据。

目前我已经在Rails中的全局变量中为User预加载了所有关系表,但它工作正常,除了使用所有同步和转换数据维护缓存很复杂。

我尝试过memcached,但速度很慢,因为每个对象都必须在每次请求时被序列化/反序列化。

处理此类页面的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

如果您的单个模型具有一堆关系,那么使用“include”进行热切加载应该可以帮助您。在Rails 2.3它的工作原理如下:

User.find(1, :include => [:relationship1, :relationship2, :relationship2])

答案 1 :(得分:0)

同意,ActiveRecord的“包含”选项应该有很多帮助。但是不要忘记你也可以嵌套关联。例如,假设你有以下设置。

User
 - Blog
   - Posts
     - Comments
 - Images
   - Comments
 - Videos
   - EncodedVideos

可以在ActiveRecord中设置为:


User.find(:all, :include => {:user => [{:blog => {:posts => :comments}}, {:images => :comments}, {:videos => :encoded_videos}]})

希望这有帮助。

答案 2 :(得分:0)