簡體   English   中英

Rails 4視圖渲染非常慢

[英]Rails 4 View Rendering Very Slow

我一直在開發我的第一個Rails App,但它突然變得非常緩慢。 我不確定是什么原因造成的。 我已經添加了回形針來管理圖像,並且剛好在它開始變慢之前切換到使用Dropbox(而不是本地)存儲,但是我也進行了一些無關的視圖更改。

現在,我對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花費了將近一分鍾零二十秒來呈現,並且數據庫訪問並不是真正的問題。 這是正在渲染的視圖。

    <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的新手,有人可以向我推薦一些我可以采取的措施,以查看導致此情況的原因嗎? 我四處搜尋,發現很多人都遇到了這個問題,但是顯然有很多原因會發生,因為我發現什么都沒有解決我的特定問題。

編輯:添加急切加載后,活動記錄要快得多,但視圖呈現仍然非常慢。

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)

通話exists? 在Paperclip中,它非常慢,因為它將要么檢查文件系統,要么如果您正在使用Amazon S3,則每次調用它都會發出一個http請求。 而不是使用exists? 您可以使用game.image? user.avatar? 這只會檢查文件名是否存儲在數據庫中,而不是檢查文件是否實際存在。 如果您不擔心這些圖像在Rails應用程序的上下文之外被刪除,它將更快。

我將從注釋掉ERB文件中的任何ruby代碼開始,然后嘗試精確指出導致渲染速度變慢的哪一行。 我從未使用過Paperclip,但是@abstractcoder的響應肯定是一個原因。

另一種選擇是使用分段緩存,描述在這里 它將允許您緩存視圖的某些部分,以便從磁盤呈現它們,而不是在每個請求上進行處理。 您可以緩存代碼的某些部分,這非常巧妙,但是如果更新了模型,它仍然足夠聰明,可以破壞緩存。

但是在進行任何過早的優化之前,請務必先尋找根本原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM