5

我已经搜索过,似乎找不到一个好的来源,是否可以将以下方法组合起来被认为是一种好习惯:当将 memcached 与 dalai gem 一起使用并且有一个为请求多次调用的方法时在模型中使用第二个块优于第一个块的性能优势?将这样的“记忆化”与 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 服务器之间的往返延迟,memoization 将比访问缓存更快。

我不能说这是否是最佳实践,但这是我在你的情况下会做的。

于 2015-02-18T21:47:14.613 回答