1

jbuilderビューとactiverecordクエリの両方をキャッシュする方法についてのアドバイスの直後。基本的に2つのものをキャッシュに保存しているため、現在のやり方は正しくないと感じています。これをどうにか組み合わせることはできますか?データベースがヒットしないように SQL レコードをキャッシュし、速度を最大化するためにビュー ファイルもキャッシュする必要があります。

# Controller
@posts = Rails.cache.fetch ["posts"], :expires_in => 1.hour do
  Post.all.limit(10).order("id desc").to_a
end

# Jbuilder view
json.cache! ["posts"], :expires_in => 1.hour do |json|
    json.array! @posts do |post|
      json.id post.id
      json.title post.title
    end
 end
4

1 に答える 1

1

そのアクティブレコードクエリが本当に遅い場合を除いて、あなたはこれを考えすぎていると思います。キャッシュ メカニズムは非常にスマートで、オブジェクトをプルしてupdated_at. 更新された場合は、json 応答をビルドします。そうでない場合は、以前に構築されたものを提供します。多くの場合、2 秒のジョブが 10 ミリ秒、または最初の db クエリにかかる時間までかかります。

ただし、主張する場合、この回答は方法を示しています。https://stackoverflow.com/a/23783119/252799 activerecord 呼び出しはキャッシュ ブロック内にあるため、キャッシュ ミスが発生した場合にのみ実行されることに注意してください。

于 2014-05-21T12:38:27.377 に答える