1

私のシナリオに合わせてキャッシュシステムを整理するための最良の方法を見つけようとしています:

私の Web アプリには「トレンド ムービー」があります。これは基本的に、Twitter のトレンド トピック (会話の人気トピック) のようなものです。5 つのオブジェクトMovie.trendingの配列を返す関数 を作成しました。Movieただし、トレンド動画の計算はかなり CPU を集中的に使用し、すべてのページに表示されるため、結果をキャッシュして 5 分後に有効期限が切れるようにしたいと考えています。Movie.trending理想的には、コードのどこからでも呼び出して、キャッシュが期待どおりに機能すると想定できるようにしたいと考えています。結果が 5 分以内の場合は結果を更新し、それ以外の場合はキャッシュされた結果を提供します。

フラグメント キャッシングは、このようなタスクの正しい選択ですか? 使用すべき追加の gem はありますか? 私はHerokuを使用していません。

ありがとう!

4

1 に答える 1

1

このモデルのキャッシュにアクセスするには、Rails.cache.fetch を試すことができます。以下の例を参照してください。

# model - app/models/movie.rb
class Movie
  def self.trending
    Rails.cache.fetch("trending_movies", :expires_in => 5.minutes) do
      # CPU intensive operations
    end
  end
end

# helper - app/views/helpers/application.rb
module ApplicationHelper
  def trending_movies
    content_tag :div do
      Movie.trending
    end
  end
end

# view - app/views/shared/_trending_movies
trending_movies

開発モードでテストするには、特定の環境でキャッシュをオンにすることを忘れないでください

于 2012-06-13T03:55:46.493 に答える