前回はactive_adminで問題が発生しました。私は5000以上の行のデータを持っているテーブルでは非常にゆっくりと動作します。どのように私はそれを最適化できますか?たぶん、誰かがこのモジュールのためのいくつかの非同期ロードプラグインを知っていますか?active_adminを最適化するにはどうすればいいですか
15
A
答えて
35
あなたができることはいくつかあります。
デフォルトでは、Active Adminは関連付けをインデックスページのドロップダウンフィルタとして読み込みます。これらのフィルタが使用されていない場合は、そのモデルのすべてのレコードをインスタンス化してドロップダウンを作成するため、フィルタを削除すると便利です。
ActiveAdmin.register Post do
remove_filter :categories
end
インデックスページに関連するレコードに依存する列がある場合は、それらを熱心に読み込むのに役立ちます。
ActiveAdmin.register Post do
controller do
def scoped_collection
super.includes :author, :publisher
end
end
end
あなたが唯一の5000件のレコードを持っているので、これは実際には適用されませんが、あなたがテーブルのDB COUNT
は長い時間がかかってもポイントを得る場合は、底に、カウントを無効にしたい場合がありますインデックスページの右側に表示されます。 (この機能は0.6.1で追加されました)
ActiveAdmin.register Post do
index pagination_total: false
end
ありがとうございます!これは素晴らしい答えです! – itdxer
フィルタを 'filter:association、as::select、collection: - > {Association.pluck:id}'のように設定するほうがはるかに速いでしょう...それぞれの 'association'のためにRubyオブジェクトをインスタンス化するのではなく'filter:association'を無条件に実行すると、デフォルトでは行がありますか? – mecampbellsoup
はい、それは大いに役立ちます。しかし、人間にやさしい名前を戻すことを確実にする必要があります。例: 'Author.pluck(:name、:id)' – seanlinsley