Ruby on rails Rails花费了大量的时间来呈现页面

Ruby on rails Rails花费了大量的时间来呈现页面,ruby-on-rails,performance,Ruby On Rails,Performance,这更像是一个“我从哪里开始”的问题。这些视图似乎占用了最多的时间。我使用slim和coffeescript,但令人困惑的是,为什么对于异步json请求,视图呈现仍然需要很长时间 响应html(2205ms): 响应异步json请求(350ms) 控制器代码(非常简单): 这里有一个指向my-yes资产的链接。debug设置为false显示您的视图,日志显示大部分时间都花在那里,这将解释HTML和JSON@Leito-更新。角度控制器只是设置重复的事件。但正如我所说,即使在JSON请求中,视图呈现

这更像是一个“我从哪里开始”的问题。这些视图似乎占用了最多的时间。我使用slim和coffeescript,但令人困惑的是,为什么对于异步json请求,视图呈现仍然需要很长时间

响应html(2205ms):

响应异步json请求(350ms)

控制器代码(非常简单):


这里有一个指向my-yes
资产的链接。debug
设置为false

显示您的视图,日志显示大部分时间都花在那里,这将解释HTML和JSON@Leito-更新。角度控制器只是设置重复的事件。但正如我所说,即使在JSON请求中,视图呈现也要花费很长时间。可能是因为您正在将所有事件转储到
gon.events
,它可能就是这个大小,您如何将@events序列化为JSON?
total\u count
是您自己的方法吗?首先,只是一个建议,不要按
created\u在
订购,而是使用
id
。其次,我看到您使用的是AngularJS,我怀疑慢度问题可能就在这方面。看起来我做了一些事情,修复了大部分json响应时间(不确定是什么)。但是我实现了反馈记录id排序,并将
gon.events
移动到
format.html
块中。似乎
gon
可能是一个瓶颈。我正在使用kaminari进行分页(总计数)。响应时间降至
在47毫秒内完成200 OK(视图:35.5毫秒|活动记录:2.9毫秒)
。。。仍然看起来有点迟钝(对于json响应)。显示您的视图,日志显示大部分时间都花在那里,这将解释HTML和json之间的区别JSON@Leito-更新。角度控制器只是设置重复的事件。但正如我所说,即使在JSON请求中,视图呈现也要花费很长时间。可能是因为您正在将所有事件转储到
gon.events
,它可能就是这个大小,您如何将@events序列化为JSON?
total\u count
是您自己的方法吗?首先,只是一个建议,不要按
created\u在
订购,而是使用
id
。其次,我看到您使用的是AngularJS,我怀疑慢度问题可能就在这方面。看起来我做了一些事情,修复了大部分json响应时间(不确定是什么)。但是我实现了反馈记录id排序,并将
gon.events
移动到
format.html
块中。似乎
gon
可能是一个瓶颈。我正在使用kaminari进行分页(总计数)。响应时间降至
在47毫秒内完成200 OK(视图:35.5毫秒|活动记录:2.9毫秒)
。。。仍然看起来有点迟钝(对于json响应)。
Started GET "/message_boards?pp=full-backtrace" for 10.0.2.2 at 2016-06-14 19:56:24 +0000
Processing by MessageBoardsController#index as HTML
  Parameters: {"pp"=>"full-backtrace"}
  User Load (2.7ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 5  ORDER BY `users`.`id` ASC LIMIT 1
  Role Load (4.0ms)  SELECT  `roles`.* FROM `roles` WHERE `roles`.`id` = 5 LIMIT 1
  MessageBoard::Message Load (2.3ms)  SELECT  `message_board_messages`.* FROM `message_board_messages`  ORDER BY `message_board_messages`.`created_at` DESC LIMIT 20 OFFSET 0
   (3.6ms)  SELECT COUNT(*) FROM `message_board_messages`
  Rendered message_boards/index.html.slim within layouts/application (0.9ms)
  Exchange Load (3.4ms)  SELECT  `exchanges`.* FROM `exchanges`  ORDER BY `exchanges`.`id` ASC LIMIT 1
  CACHE (0.3ms)  SELECT  `exchanges`.* FROM `exchanges`  ORDER BY `exchanges`.`id` ASC LIMIT 1
  Rendered layouts/_menu.html.slim (322.1ms)
Completed 200 OK in 2205ms (Views: 2026.9ms | ActiveRecord: 16.2ms) 
Started GET "/message_boards.json?page=2" for 10.0.2.2 at 2016-06-14 19:56:58 +0000
Processing by MessageBoardsController#index as JSON
  Parameters: {"page"=>"2"}
  User Load (4.8ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 5  ORDER BY `users`.`id` ASC LIMIT 1
  Role Load (2.7ms)  SELECT  `roles`.* FROM `roles` WHERE `roles`.`id` = 5 LIMIT 1
  MessageBoard::Message Load (3.1ms)  SELECT  `message_board_messages`.* FROM `message_board_messages`  ORDER BY `message_board_messages`.`created_at` DESC LIMIT 20 OFFSET 20
   (2.9ms)  SELECT COUNT(*) FROM `message_board_messages`
Completed 200 OK in 358ms (Views: 140.5ms | ActiveRecord: 13.5ms)
class MessageBoardsController < ApplicationController
  def index
    authorize!(:follow, :message_board)
    @events = MessageBoard::Message.order(created_at: :desc).page(params[:page]).per(20)
    gon.events = @events.as_json
    gon.total_items = @events.total_count

    respond_to do |format|
      format.html
      format.json { render json: {events: @events, total_items: @events.total_count} }
    end
  end
end
div ng-controller='MessageBoardController' ng-init='init()'
  .row
    .search-message-board
      h3.small-16.columns.medium-6.columns.left Showing {{ filteredEvents.length }} of {{ totalItems }} Results
      div.small-16.medium-6.columns.right
        form.search-form
          input.radius.search-text maxlength="120" type="text" ng-model='search' placeholder='Search'
          span.searchclear.fi-x-circle ng-click="search = ''"
  #messages
    .message-panel.radius ng-repeat='event in filteredEvents = (events | filter: search)'
      p
        strong ID:
        |  {{ event.id }}

      p
        strong Event:
        |  {{ event.title }}
      p
        strong Message:
        |  {{ event.body }}
      p
        strong Timestamp:
        |  {{ event.created_at }}

  pagination page="currentPage" total-items="totalItems" items-per-page="itemsPerPage"