代码之家  ›  专栏  ›  技术社区  ›  George Armhold

控制器动作慢2-6倍,无响应?

  •  0
  • George Armhold  · 技术社区  · 6 年前

    在下面的代码中, slow 动作需要约145ms,然后 fast 操作需要大约35ms,在这两种情况下,操作都由一个远程(ajax)链接触发,该链接会导致呈现相同的js模板。

    为什么没有 respond_to 街区?使用一个非平凡的模板,效果更加明显(4-6倍的差异)。所有这些都处于开发模式中;我还没有在生产中测量,但我很好奇这里可能会发生什么。使用 响应到 即使没有基于请求格式的逻辑?

    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 回复  |  直到 6 年前