Ruby on rails 3 Rails局部渲染有时会花费太多时间

Ruby on rails 3 Rails局部渲染有时会花费太多时间,ruby-on-rails-3,ruby-on-rails-3.1,partial-views,renderpartial,Ruby On Rails 3,Ruby On Rails 3.1,Partial Views,Renderpartial,在我看来,我是在渲染一个部分。这实际上是一个行元素,在表中显示了大约500-600次。我已加载所有关联。 但是,问题是,同一部分有时需要突然不同的渲染时间 My rails服务器o/p: Rendered admin/invoices/_update.html.erb (1330.3ms) Rendered admin/invoices/_update.html.erb (4.8ms) Rendered admin/invoices/_update.html.erb (4.8ms) Render

在我看来,我是在渲染一个部分。这实际上是一个行元素,在表中显示了大约500-600次。我已加载所有关联。 但是,问题是,同一部分有时需要突然不同的渲染时间

My rails服务器o/p:

Rendered admin/invoices/_update.html.erb (1330.3ms)
Rendered admin/invoices/_update.html.erb (4.8ms)
Rendered admin/invoices/_update.html.erb (4.8ms)
Rendered admin/invoices/_update.html.erb (8.8ms)
Rendered admin/invoices/_update.html.erb (4.4ms)
Rendered admin/invoices/_update.html.erb (1309.9ms)
Rendered admin/invoices/_update.html.erb (4.7ms)
Rendered admin/invoices/_update.html.erb (4.6ms)
Rendered admin/invoices/_update.html.erb (4.6ms)
Rendered admin/invoices/_update.html.erb (1322.6ms)
Rendered admin/invoices/_update.html.erb (4.2ms)
而且,没有特定的行每次花费的时间更长

在我的视图文件中:

<% @updates.each do |update| %>
<%= render :partial => 'update', :locals => {:user => update[0]} #each of this is  a row %>
<% end %>

'update',:locals=>{:user=>update[0]}#每个都是一行%>
更新:
还建议这是否是一个好方法?i、 e:在一个部分上循环了这么多次。我不能使用分页和Ajax来加快进度。!任何其他方法。?

部分在呈现集合时非常有用。通过:collection选项将集合传递给分部时,将为集合中的每个成员插入一次分部:

<%= render :partial => 'update', :collection => @updates %>
'update',:collection=>@updates%>
这也有一个速记。假设@updates是更新实例的集合,您只需将其写入index.html.erb即可产生相同的结果:

<%= render @updates %>


详细解释了这一点

虽然我不知道为什么渲染中会出现延迟尖峰,但我强烈建议颠倒顺序:对部分进行所有更新,然后在部分中迭代并渲染行

视图文件

    <%= render :partial => 'update', :locals => {:updates => @updates} %>
'update',:locals=>{:updates=>@updates}%>
在更新部分中

    <% updates.each do |update| %>
       RENDER LOGIC
    <% end %>

渲染逻辑

这就是为什么您不必为更新中的每一行承担部分加载开销的原因。希望这有帮助

嘿,谢谢你。我试过了,渲染效果立即下降了15%-20%。然而,我仍然无法理解这些不规则峰值的原因。您的结果来自开发环境吗?请记住,在生产环境中,视图代码是缓存的,所以其他建议可能在性能方面更有意义。试着在生产环境中创建基准测试,因为这些是最终重要的渲染时间。启用资产管道,预编译资产,哇,页面就在那里出现了!闪电很快!谢谢