【发布时间】:2013-10-25 14:05:15
【问题描述】:
我的应用会生成一个用户日历,其中包含可用于预约的空档。它会自动检测访问者的时区,并在访问者的时区显示用户的可用性。
由于检测到的时区用于渲染显示,片段缓存将不起作用。
该视图生成 100 多个链接,访问者可以选择这些链接来预订预约时间段。基准测试表明,生成链接是视图中最慢的部分 - 每个链接大约需要 0.5 毫秒。
循环ERB和生成超链接最有效的方法是什么?
我们开始使用 HTML 而不是 link_to Rails 助手 - 这在开发中快了 2 倍,但在生产中则慢了 - 我们的结论是 Heroku 必须优化这些 Rails 助手。
<a href="/<%= @profile.profile_url %>/
appointments_calendars/<%= @appointments_calendar.id %>/
booked_events/new?
timezone_name=<%= @timezone.name %>&
event_slot_id=<%= event_id %>"
class="left-slot open-slot" rel="nofollow">
<%= timeslot.strftime("%l:%M%p") %></a>
在哪里 @profile.profile_url 是一个字符串,@appointments_calendar.id 是一个来自 activerecord 对象的整数。 @timezone.name 是一个字符串。它们不会在循环中更改 - 也就是说,它们是在页面呈现时生成并且不会更改。
event_id 是一个整数,timeslot 是一个时间。它们对于循环中的每个链接都是不同的。
我想知道是否存在基于字符串缓冲工作原理在 Ruby/Rails 中生成此 HTML 链接的最佳方法。
循环是一个整数范围,每天运行,
(first_hour..last_hour).step(1.hour).each
另外,在 Rails 中是否有一种不依赖 ERB 的更快方法来执行此操作?
【问题讨论】:
-
你每次如何定义
event_id和timeslot?
标签: ruby-on-rails ruby performance heroku erb