如何每天在Rails中缓存值?

mut*_*ity 3 ruby-on-rails

每天在rails中缓存值的最佳方法是什么?

我有一个可以通过API访问的数据库调用,我想每天进行和存储它。

最好的方法/做法是什么?

inf*_*sed 6

假设您有一个widget_price您只想每24小时更新一次。通常,您是Widget.calculate_daily_price用来获取每日价格的,但是运行速度太慢会降低您的网页的运行速度。

widget_price = Widget.calculate_daily_price
Run Code Online (Sandbox Code Playgroud)

用Rails.cache.fetch包装该调用,并在24小时内使结果过期。

widget_price = Rails.cache.fetch('widget_price', expires_in: 24.hours) do
  Widget.calculate_daily_price
end
Run Code Online (Sandbox Code Playgroud)

现在,如果widget_price已被缓存,则将使用该缓存的值,并且该块将被忽略。如果运行时高速缓存已过期,则将执行该块,并将高速缓存设置为新值另外24小时。