5

私は検索しましたが、次のメソッドを組み合わせることをお勧めできるかどうかについて、良い情報源を見つけることができないようです:モデルで最初のブロックよりも 2 番目のブロックを使用する方がパフォーマンス上の利点はありますか? このような「メモ化」を Rails.cache.fetch と組み合わせて使用​​することは良い習慣と考えられますか?

def total_ham
  Rails.cache.fetch("#{self.cache_key}/total_ham") do
    self.hams.sum(:metric_tons)
  end
end

また

def total_ham
  @total_ham ||= Rails.cache.fetch("#{self.cache_key}/total_ham") do
    self.hams.sum(:metric_tons)
  end
end
4

1 に答える 1

3

total_hamメソッドがリクエストごとに複数回呼び出される場合total_hamは、キャッシュから取得している場合でも、メソッドの結果をメモする必要があります。メモ化は、アプリ サーバーと memcached サーバー間のラウンドトリップ レイテンシーにより、キャッシュにヒットするよりも高速になります。

これがベストプラクティスであるかどうかはわかりませんが、あなたの状況で私がすることです.

于 2015-02-18T21:47:14.613 に答える