我使用的是这样的:
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) 等
有没有办法像这样使用它并减少招聘时间?也许预先缓存或其他一些?
答案 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 ,之后渲染部分变得更快了。