铁路部分循环渲染 - 高负荷

时间:2015-03-24 16:40:39

标签: ruby-on-rails

我使用的是这样的:

render partial: "shared/user/avatar_with_nickname", locals: user

我在不同模型的视图中多次使用此部分,方便且工作,但这对于时间负载是不利的。

有控制台webrick:

  

渲染了shared / user / _avatar_with_nickname.html.haml(15.9ms)已渲染   shared / user / _avatar_with_nickname.html.haml(14.8ms)已渲染   shared / user / _avatar_with_nickname.html.haml(17.6ms)   等

有没有办法像这样使用它并减少招聘时间?也许预先缓存或其他一些?

2 个答案:

答案 0 :(得分:2)

通常,破坏视图对局部影响的影响不是很大(http://www.justinweiss.com/blog/2014/02/13/how-much-time-does-rendering-a-partial-really-take/)。因此,优化其他内容(如帮助程序和部分计算中的其他计算)可能更好。

在您的情况下,我可以建议根据用户缓存渲染的部分。因此,如果您遇到一个用户的多个注释,您将使用缓存局部,避免重新计算部分。

这样的事情对你有用

cache "#{user.id}_avatar_with_nickname" do
    # partial content
end

答案 1 :(得分:0)

我找到了解决方案!如果可能不在循环中使用渲染。这是个坏主意,因为每次迭代都会为开放/关闭文件渲染消耗时间。但有时在我的情况下使用它是必要的或非常舒适的。

所以,我的解决方案是使用帮助器。我创建了自己的助手 avatar_for ,之后渲染部分变得更快了。