私のアプリは、予定を予約するために利用可能なスロットを含むユーザーのカレンダーを生成します。訪問者のタイム ゾーンを自動的に検出し、訪問者のタイム ゾーンでのユーザーの空き時間を表示します。
検出されたタイム ゾーンは表示のレンダリングに使用されるため、フラグメント キャッシュは機能しません。
このビューは、訪問者が予定の時間枠を予約するために選択できる 100 以上のリンクを生成します。ベンチマークは、リンクの生成がビューの最も遅い部分であることを示しており、リンクごとに約 0.5 ミリ秒かかります。
ERB をループしてハイパーリンクを生成する最も効率的な方法は何ですか?
link_to Rails ヘルパーの代わりに HTML の使用を開始しました。開発では 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
または、ERB に依存しない Rails でこれを行うためのより高速な方法はありますか?