В следующем коде действие slow
занимает ~ 145 мс, а действие fast
- ~ 35 мс.В обоих случаях действие инициируется удаленной (Ajax) ссылкой, которая приводит к отображению того же шаблона js.
Почему код работает медленнее без блока respond_to
?Эффект еще более выражен (разница 4-6х) с нетривиальным шаблоном.Все это в режиме разработки;Я не измерял производство, но мне любопытно, что здесь происходит.Является ли идиоматичным использование respond_to
, даже если нет логики, основанной на формате запроса?
class FooController < ApplicationController
def index
end
def slow
benchmark 'slow' do
render :bar
end
end
def fast
benchmark 'fast' do
respond_to do |format|
format.js {render :bar}
end
end
end
end
bar.js.erb:
var div = document.createElement("div");
div.innerHTML = "foo";
document.getElementsByTagName('body')[0].appendChild(div);
index.html.erb:
<%= link_to 'slow', '/foo/slow', remote: true %>
<br/>
<br/>
<%= link_to 'fast', '/foo/fast', remote: true %>