Memcached:在Heroku上使用expires_in进行片段缓存

时间:2012-05-05 03:59:19

标签: ruby-on-rails ruby-on-rails-3 heroku memcached

我正在尝试使用带有Rails 3.1和dalli的Memcached插件在Heroku雪松堆栈上设置一个缓存系统,其中包含许多应该在每天结束时到期的项目。

为此,我使用的是实用方法:

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运行的计划任务并清除了日敏感缓存项,但我更喜欢使用本机缓存过期。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

为了在Rails和Heroku上正确计算时间,您需要尊重地使用时间和区域。因此,您想要的是以下内容。

Time.zone.now.end_of_day - Time.zone.now