1

我试图找出为我的场景设置组织缓存系统的最佳方法:

我的网络应用程序有“热门电影”,基本上就像 twitter 的热门话题——热门话题。我编写了函数,它返回一个包含 5 个对象Movie.trending的数组。Movie然而,由于计算热门电影是相当 CPU 密集型的,并且它会显示在每一页上,我想缓存结果并让它在 5 分钟后过期。理想情况下,我希望能够Movie.trending从代码中的任何位置调用,并假设缓存将按照我的预期工作——如果结果是 5 分钟或更早,则更新结果,否则,提供缓存的结果。

对于这样的任务,片段缓存是否是正确的选择?我应该使用任何其他宝石吗?我没有使用 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 回答