我构建了一个Rails应用程序来跟踪我的业务手机库存。我们现在有1,426个库存对象。当我在我们的Heroku托管的应用程序上拉出库存索引页面(所有库存的表格)时,页面需要超过10秒才能加载。
我正在研究片段缓存,在所有适用的关联键上添加索引,并试图找出如何对结果进行分页。
加快页面加载的最佳方法是什么?
答案 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秒。
再次感谢! 布伦南