Ruby on rails Rails缓存在时区中的特定时间过期
在Elastic Beanstalk上的Amazon EC2实例上,我一直试图让控制器的索引操作在CST时间每晚7:01使缓存过期。它似乎不起作用,我也不太清楚为什么。我真的不想使用cron作业,因为这对eb来说有点麻烦,我还在检查,所以我想用一个显式的time指令终止缓存 这是我正在使用的代码Ruby on rails Rails缓存在时区中的特定时间过期,ruby-on-rails,caching,Ruby On Rails,Caching,在Elastic Beanstalk上的Amazon EC2实例上,我一直试图让控制器的索引操作在CST时间每晚7:01使缓存过期。它似乎不起作用,我也不太清楚为什么。我真的不想使用cron作业,因为这对eb来说有点麻烦,我还在检查,所以我想用一个显式的time指令终止缓存 这是我正在使用的代码 caches_action :index, :layout => false, :unless => proc { user_signed_in? },expires_in: Time.u
caches_action :index, :layout => false, :unless => proc { user_signed_in? },expires_in: Time.use_zone("Central Time (US & Canada)") { DateTime.now.in_time_zone(Time.zone).beginning_of_day + 19.hours + 1.minute }
你知道我哪里出了问题吗
为了进一步说明这一点,是否有更好的方法在CST晚上7:01在一次方法调用中使所有缓存过期
感谢使用ActiveSupport::Cache::Store,您可以执行以下操作:
<% cache(key, :expires_in => 12.hours) do %>
<!-- content -->
<% end %>
12.hours)do%>
以下是指向文档的链接:
在我看来,使缓存过期的最佳方法是更改数据。您希望在特定时间使缓存过期的原因是什么?也许你可以使用一个版本的“基于时间的过期”,但我只看到它在一个操作数小时后使缓存内容过期。嗨@BrianKunzig…我理解你的观点,但问题是我在任何给定的时间都有信息进入数据库(在数据库中更新/创建)。数据设置为在CST下午7点显示。因此,没有可用于使缓存过期的“更新”。在创建/销毁时使缓存过期是否有用?如果是这样,您可以使用清理器使使用“rails Observators”gem保存的任何DB exchange上的缓存过期,并编写一个快速清理器方法。除此之外,您可能还必须通过Web使用计划任务