Nat*_*n W 5 memcached ruby-on-rails memoization
我已经搜索过但似乎无法找到一个很好的来源,说明是否可以将以下方法结合起来视为一种好的做法:当使用 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
Run Code Online (Sandbox Code Playgroud)
或者
def total_ham
@total_ham ||= Rails.cache.fetch("#{self.cache_key}/total_ham") do
self.hams.sum(:metric_tons)
end
end
Run Code Online (Sandbox Code Playgroud)
如果total_ham每个请求多次调用该方法,那么total_ham即使您从缓存中提取该方法的结果,也应该记住该方法的结果。由于应用程序服务器和 memcached 服务器之间存在往返延迟,记忆化将比命中缓存更快。
我不能说这是否是最佳实践,但这就是我在您的情况下会做的。
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |