Действие контроллера в 2-6 раз медленнее без response_to? - PullRequest
0 голосов
/ 09 декабря 2018

В следующем коде действие 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 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...