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