假设您有一个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小时。