我已经搜索过,似乎找不到一个好的来源,是否可以将以下方法组合起来被认为是一种好习惯:当将 memcached 与 dalai gem 一起使用并且有一个为请求多次调用的方法时在模型中使用第二个 block 优于第一个 block 的性能优势?将这样的“记忆化”与 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
最佳答案
如果 total_ham
方法在每个请求中被多次调用,那么你应该记住 total_ham
的结果方法,即使您从缓存中取出它。由于您的应用程序服务器和 memcached 服务器之间的往返延迟,memoization 将比访问缓存更快。
我不能说这是否是最佳实践,但这是我在你的情况下会做的。
关于ruby-on-rails - Rails.cache.fetch 在记忆化方面表现更好吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572665/