我正在尝试使用带有 Rails 3.1 的 Memcached 插件和 Heroku cedar 堆栈上的 dalli 设置缓存系统,其中有许多项目应该在每天结束时过期。
为此,我使用了一种实用方法:
def self.seconds_to_next_day
((DateTime.now.end_of_day - DateTime.now) * 24 * 60 * 60).to_i.seconds
end
在haml视图中像这样缓存:
- cache "user_#{current_user.id}_my_groups", :expires_in => Utils.seconds_to_next_day do
= render "shared/my_groups"
但它不会在每天结束时到期。我也尝试过将秒数作为整数传递,不带 .seconds,但没有任何区别。
现在我已经退回到每天 00:00 运行的计划任务并清除对日期敏感的缓存项,但我更喜欢使用本机缓存到期。
有任何想法吗?谢谢!