加速使用大型表格的Rails应用程序

时间:2015-12-15 09:21:28

标签: ruby-on-rails heroku datatables

我构建了一个Rails应用程序来跟踪我的业务手机库存。我们现在有1,426个库存对象。当我在我们的Heroku托管的应用程序上拉出库存索引页面(所有库存的表格)时,页面需要超过10秒才能加载。

我正在研究片段缓存,在所有适用的关联键上添加索引,并试图找出如何对结果进行分页。

加快页面加载的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

您可以使用分页,通过分页,您可以限制每页的库存对象数量。

paginate是否是rails的gem,可以解决以下问题: https://github.com/mislav/will_paginate

答案 1 :(得分:1)

通用问题的通用answer

答案 2 :(得分:1)

可能发生的一件事是您有N + 1个查询,安装项目符号gem。该gem基本上会在开发模式中告诉您正在进行的所有N + 1查询。

如果您不知道N + 1查询的内容:

假设你的控制器中有这个:

def show 
  @user = User.find(params[:id])
end

并且假设用户的手机型号相关,因此在您的视图中,您可以执行以下操作:

= @user.cellphones.last.number

这将生成查询以查找手机,并且对于您所拥有的每件事情也是如此。 因此,要解决此问题,您可以执行以下操作:

def show
  @user = User.includes(:cellphone).find(params[:id]) 
end

这基本上会为用户和手机提供视图。 这可能无法解决您的问题,但至少它会帮助一些人。

答案 3 :(得分:0)

感谢您的回答,每个人,我为一般性问题道歉。

这肯定是一个N + 1问题,通过使用.includes()通过急切加载解决。我看了一下开发日志,发现了查询塔。对我的视图表中显示的关联模型数据使用两个.includes()后,页面加载时间缩短到~1.7秒。

再次感谢! 布伦南

相关问题