ruby – Rails 4:为什么一种更快速渲染局部的方法呢?

前端之家收集整理的这篇文章主要介绍了ruby – Rails 4:为什么一种更快速渲染局部的方法呢?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不确定这是否是Rails特定问题,因此我也将其标记ruby.

我通过部分渲染事件记录的集合.但是,我发现不同地呈现部分会导致严重的性能差异.

两个版本都使用完全相同的数据,唯一改变的是用于渲染部分的代码.

为什么heck是一个版本始终比另一个版本快4倍?让我想知道我正在采取什么样的性能……

慢版(950ms总请求时间):

<% events.each do |event| %>
  <%= render partial: "events/event",locals: { event: event } %>
<% end %>

# Log output
Rendered events/_event.html.erb (1.1ms)
Rendered events/_event.html.erb (1.1ms) 
...

更快的版本(总请求时间250ms):

<%= render partial: "events/event",collection: events,as: :event %>

# Log output
Rendered events/_event.html.erb (58.7ms)

解决方法

例1:
您正在渲染部分x次(取决于事件).
这意味着你正在编译html x次(每次循环运行一次).这很慢

例2:您正在使用一组事件呈现一个部分html编译一次(因为只有一个部分).这很快

猜你在找的Ruby相关文章