没有response_to时,控制器动作的速度会慢2-6倍?

时间:2018-12-09 20:20:09

标签: ruby-on-rails

在下面的代码中,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 %>

0 个答案:

没有答案