如何从后台进程写入部分缓存并从缓存中读取部分并在rails中呈现它?

与我之前询问过的问题相关如何将数据库密集型页面存储在rails中的后台进程中

我想每15分钟从后台进程写一个部分缓存。 当用户请求进来时,我可以从缓存中读取部分并呈现它,并且永远不会明确地使它过期。

有没有办法真正做到这一点?

谢谢,

我想你想要的是用以下内容读取db查询的结果:

Rails.cache.fetch("key", :expires => 365.days) do # db query end 

并在15分钟内从cron作业更新它:

 Rails.cache.write("key", # db query ) 

然后允许你的部分每15分钟(或每次偶数)再生,因为这不是操作的密集部分。

NB

  1. 我正在设置:expires => 365.days,以防您在配置中设置了默认的到期时间,因为我还没有查找如何明确说’never’。
  2. 您需要在获取块中进行查询而不是仅仅执行读取调用,因此在从未运行过cron作业时(即重新启动后)事情不会中断。 也就是说,用户仍然会在重启/重启后第一次点击页面时等待它加载。