ruby-on-rails - Rails 4 View 渲染非常慢

标签 ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

我一直在开发我的第一个 Rails 应用程序,它突然变得非常慢。我不确定是什么原因造成的。我已经添加了用于管理图像的回形针,并在它开始变慢之前切换到使用 Dropbox(而不是本地)存储,但我也进行了一些不相关的 View 更改。

现在,我对 Rails 和 MVC 框架总体上还比较陌生。所以我确实怀疑这是我由于无知和缺乏经验而做错的事情。只是同样的无知和缺乏经验导致难以诊断问题。

因此,这是使用“rails server”进行开发时的输出(尽管在 Heroku 上的生产并没有快多少)。

    Started GET "/games/index" for 217.156.133.130 at 2014-05-16 09:31:10 -0400
    Started GET "/games/index" for 217.156.133.130 at 2014-05-16 09:31:10 -0400
    Processing by GamesController#index as HTML
    Processing by GamesController#index as HTML
      Game Load (1.3ms)  SELECT "games".* FROM "games" ORDER BY name ASC
      Game Load (1.3ms)  SELECT "games".* FROM "games" ORDER BY name ASC
   (0.8ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 9]]
   (0.8ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 9]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 9]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 9]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 5]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 5]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 5]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 5]]
   (1.0ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 7]]
   (1.0ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 7]]
  User Load (0.6ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 7]]
  User Load (0.6ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 7]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 12]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 12]]
  User Load (0.5ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 12]]
  User Load (0.5ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 12]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 2]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 2]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 2]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 2]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 10]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 10]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 10]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 10]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 23]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 23]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 23]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 23]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 18]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 18]]
  User Load (0.5ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 18]]
  User Load (0.5ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 18]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 3]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 3]]
  User Load (0.7ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 3]]
  User Load (0.7ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 3]]
   (0.8ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 13]]
   (0.8ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 13]]
  User Load (0.5ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 13]]
  User Load (0.5ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 13]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 24]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 24]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 24]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 24]]
   (1.2ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 17]]
   (1.2ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 17]]
  User Load (0.8ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 17]]
  User Load (0.8ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 17]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 4]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 4]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 4]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 4]]
   (1.0ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 8]]
   (1.0ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 8]]
  User Load (0.6ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 8]]
  User Load (0.6ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 8]]
   (0.8ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 19]]
   (0.8ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 19]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 19]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 19]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 15]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 15]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 15]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 15]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 16]]
   (0.6ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 16]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 16]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 16]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 20]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 20]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 20]]
  User Load (0.4ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 20]]
   (1.0ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 21]]
   (1.0ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 21]]
  User Load (0.7ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 21]]
  User Load (0.7ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 21]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 22]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 22]]
  User Load (0.6ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 22]]
  User Load (0.6ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 22]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 1]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 1]]
  User Load (0.5ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 1]]
  User Load (0.5ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 1]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 6]]
   (0.9ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 6]]
  User Load (0.7ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 6]]
  User Load (0.7ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 6]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 11]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 11]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 11]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 11]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 14]]
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 14]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 14]]
  User Load (0.3ms)  SELECT "users".* FROM "users" INNER JOIN "user_games" ON "users"."id" = "user_games"."user_id" WHERE "user_games"."game_id" = $1  [["game_id", 14]]
  Rendered games/index.html.erb within layouts/application (77221.9ms)
  Rendered games/index.html.erb within layouts/application (77221.9ms)
Completed 200 OK in 77227ms (Views: 77194.1ms | ActiveRecord: 31.4ms)
Completed 200 OK in 77227ms (Views: 77194.1ms | ActiveRecord: 31.4ms)

如您所见, View 需要将近 1 分 20 秒的时间来呈现,并且数据库访问并不是真正的问题。这是正在呈现的 View 。

    <h1>All Games</h1>

<%= link_to "Add new", games_new_path %>

<% @games.each do |game| %>
  <div class="game">
    <div class="game_image">
      <% if game.image.exists? %>
        <%= image_tag game.image.url(:thumb) %>
      <% end %>
    </div>
    <div class="game_info">
      <h2><%= link_to game.name, game %></h2><%= link_to "Edit", edit_game_path(game) %><br />
      <% if game.free %>
        This game is free.<br />
        <% if game.notes != "" %>
          N.B. <%= game.notes %>
        <% end %>
      <% end %>
      <%= game.users.size %> Players<br />
      <div class="user_list">
      <% game.users.each do |user| %>
        <div class="user_thumb">
          <% if user.avatar.exists? %>
            <%= link_to image_tag(user.avatar.url(:pinky)), user %>
          <% else %>
            <div class="alt_link">
              <%= link_to user.name, user %>
            </div>
          <% end %>
        </div>
      <% end %>
    </div>
    <div class="clear_div"></div>
    </div>
  </div>
<% end %>

我从一般编程中获得的知识告诉我,其中成本最高的部分应该是对于每个游戏我都在遍历其所有用户(用户和游戏具有多对多关系)这一事实。然而,数据库中的每个表只有几十条记录......几乎没有任何数据要处理,所以我认为它不应该真的很这么慢。

作为 Rails 新手,谁能向我推荐一些我可以采取的步骤来尝试看看是什么导致了这种情况?我在谷歌上搜索了一下,发现很多人都有这个问题,但显然有很多原因可能会发生,因为我没有找到解决我的特定问题的方法。

编辑:添加 Eager Loading 后,Active Record 快了很多,但 View 渲染仍然非常慢。

Started GET "/games/index" for 217.156.133.130 at 2014-05-16 10:07:07 -0400
Started GET "/games/index" for 217.156.133.130 at 2014-05-16 10:07:07 -0400
Processing by GamesController#index as HTML
Processing by GamesController#index as HTML
  Game Load (1.1ms)  SELECT "games".* FROM "games" ORDER BY name ASC
  Game Load (1.1ms)  SELECT "games".* FROM "games" ORDER BY name ASC
  UserGame Load (0.8ms)  SELECT "user_games".* FROM "user_games" WHERE "user_games"."game_id" IN (9, 5, 7, 12, 2, 10, 23, 18, 3, 13, 24, 17, 4, 8, 19, 15, 16, 20, 21, 22, 1, 6, 11, 14)
  UserGame Load (0.8ms)  SELECT "user_games".* FROM "user_games" WHERE "user_games"."game_id" IN (9, 5, 7, 12, 2, 10, 23, 18, 3, 13, 24, 17, 4, 8, 19, 15, 16, 20, 21, 22, 1, 6, 11, 14)
  User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."id" IN (5, 6, 4, 1, 9, 8, 11)
  User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."id" IN (5, 6, 4, 1, 9, 8, 11)
  Rendered games/index.html.erb within layouts/application (79191.5ms)
  Rendered games/index.html.erb within layouts/application (79191.5ms)
Completed 200 OK in 79196ms (Views: 79191.6ms | ActiveRecord: 2.5ms)
Completed 200 OK in 79196ms (Views: 79191.6ms | ActiveRecord: 2.5ms)

最佳答案

在 Paperclip 中调用 exists? 非常慢,因为它会检查文件系统,或者如果您使用的是 Amazon S3,它会在每次调用时发出 http 请求。您可以使用 game.image?user.avatar? 而不是使用 exists?。这只会检查文件名是否存储在数据库中,而不是检查文件是否实际存在。如果您不担心这些图像会在您的 Rails 应用程序上下文之外被删除,它会快得多。

关于ruby-on-rails - Rails 4 View 渲染非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23697113/

相关文章:

ruby-on-rails - Rails 部分 : What am I doing wrong?

ruby-on-rails - PostgreSQL 与 Rails ActiveRecord 中的多个匹配相似

javascript - 在rails4中调用js内部的配置变量

html - 未定义的方法 `error_span' - Rails 项目

ruby-on-rails - OS X Ruby on Rails PATH 安装问题

python - 如何配置 Komodo edit 以与 virtualenv 或 rvm 一起使用?

Ruby/删除匹配的键/哈希数组后的所有内容

java - Java 相对于 Ruby/JRuby 的优势

ruby-on-rails - 如何期望 '=' 方法针对 'session' 运行?

mysql - Rails migration default 0 是不是false?