3

私は自分のプロジェクトでacts-as-taggable-on gemを使用しています。ただし、すべてのタグをロードするには約 80 秒かかります。

run_controller に熱心な読み込みを追加しましたが、機能していません。コードの一部は次のとおりです。

def index
  @runs = Measurement.includes(:tags).order( "run_name DESC" ).group( :run_name )#.descending #.order_by( :run => 'desc' )
  respond_to do |format|
    format.html # index.html.erb
    format.json  { render :json => @runs }
  end
end

act-as-taggable-on でサポートされている tag_list を使用してタグを表示しています。したがって、Measurements で熱心な読み込みを使用しても、パフォーマンスに影響はありません。次の 2 つは、スタックフローに関連する問題 です。 2.acts_as_taggable_on によるクエリの最適化

ログファイルを調べたところ、最も時間がかかるのはタグのロードであることがわかりました。

ActsAsTaggableOn::Tag Load (69.9ms) SELECT tags.* FROM tagsINNER JOIN taggingsON tags. id= taggings. tag_idどこtaggingsで。taggable_id= 223866 およびtaggings. taggable_type= '測定' AND (taggings.context = 'tags' AND taggings.tagger_id IS NULL)

ActsAsTaggableOn::Tag Load (70.2ms) SELECT tags.* FROM tagsINNER JOIN taggingsON tags. id= taggings. tag_idどこtaggingsで。taggable_id= 223854 およびtaggings. taggable_type= '測定' AND (taggings.context = 'タグ'

タグをロードするために何千ものクエリがあり、各クエリのコストは約 0.07 秒でした。これらの次のコードは、タグを表示するために使用しています。

= form_for (run), :remote => true, :method => :put,  :html => { :class => "myform"} do |f|
  =f.text_field :tag_list, :class => "tags"

何か助けはありますか?ありがとう。

4

2 に答える 2

0

https://github.com/tmiyamon/acts-as-taggable-array-onへの切り替えを検討しました。データベースとして postgres を使用する必要があります。

これを見てみましょうhttp://adamnengland.wordpress.com/2014/02/19/benchmarks-acts-as-taggable-on-vs-postgresql-arrays

于 2014-07-23T21:41:02.823 に答える