【发布时间】:2014-04-01 15:52:13
【问题描述】:
有谁知道为什么每次读取缓存片段时,rails 似乎都会重新计算“expires_in”的值?
示例
cache("usecase_#{usecase.id}", :expires_in => "#{usecase.minutesToNextRun}".to_i.minutes) do
some code
end
如果我检查日志,我发现每次读取缓存片段时都会调用 usecase.minutesToNextRun 方法(这非常昂贵并且会降低应用程序的速度)。
理论
通常我希望 rails 只计算一次 :expires_in 值,然后将该值(例如 5 分钟)与当前时间(在伪代码中)进行比较。
if time_the_fragment_was_stored + expires_in > now
do nothing
else
re-render fragment
end
问题
有没有人有任何提示/想法如何防止 Rails 在每次读取片段时重新计算到期时间?
【问题讨论】:
标签: ruby-on-rails caching fragment cache-expiration