[英]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.