Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails缓存在时区中的特定时间过期_Ruby On Rails_Caching - Fatal编程技术网

Ruby on rails Rails缓存在时区中的特定时间过期

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

在Elastic Beanstalk上的Amazon EC2实例上,我一直试图让控制器的索引操作在CST时间每晚7:01使缓存过期。它似乎不起作用,我也不太清楚为什么。我真的不想使用cron作业,因为这对eb来说有点麻烦,我还在检查,所以我想用一个显式的time指令终止缓存

这是我正在使用的代码

 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使用计划任务