gpt4 book ai didi

ruby-on-rails - 使用 Rails 提高性能以加载 3000 条记录?

转载 作者:行者123 更新时间:2023-11-29 14:10:57 24 4
gpt4 key购买 nike

我有一个在 Heroku 上运行的 Rails 应用程序。我有一条通往“主页” Controller 和“列表”操作的路线:

Rails.application.routes.draw do
get 'listings', to: 'home#listings'

end

我的列表操作:

class HomeController < ApplicationController
def listings
render json: MultiJson.dump({listings:Listing.all})
end

...
end

我有一个包含 3000 条记录的列表表。 list 表的架构:

  create_table "listings", force: :cascade do |t|
t.integer "user_id", null: false
t.boolean "deleted", default: false, null: false
t.string "rent", null: false
t.string "deposit", null: false
t.string "availability", null: false
t.string "min_duration", null: false
t.string "male_count", null: false
t.string "female_count", null: false
t.string "longitude", null: false
t.string "latitude", null: false
t.string "location"
t.string "comments"
t.string "photos"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

什么时候运行“heroku logs”我看到了这个:

Started GET "/listings.json" for 108.6.235.199 at 2015-07-06 14:08:02 +0000
Processing by HomeController#listings as JSON
Parameters: {"home"=>{}}
Listing Load (34.3ms) SELECT "listings".* FROM "listings"
Completed 200 OK in 3717ms (Views: 0.3ms | ActiveRecord: 40.4ms)

json加载渲染3000条记录耗时3.7秒正常吗?有没有办法将性能提高到 100 毫秒的数量级?为什么 ActiveRecord 时间是 40.ms,Views 是 0.3ms 而 Completed 是 3717ms?使用 MongoDB 而不是 Postgres 来快速存储和加载记录会更好吗?

最佳答案

问题不在于从数据库中获取记录,如您的日志所示,它在 AR 过程中只花费 40 毫秒(3000 条记录对 PG 来说不算什么)。问题是序列化 3k 条记录。

我推荐使用 ActiveModel::Serializer帮助优化流程。

关于ruby-on-rails - 使用 Rails 提高性能以加载 3000 条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31248330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com