渲染缓存是否为真有效期?

时间:2018-02-15 13:08:54

标签: ruby-on-rails

rails文档说可以在部分渲染上使用cached: true来缓存它,但我无法确定expires_in是否可以在那里工作。像这样:

= render template: 'admin/stats/daily_finance', cached: true, expires_in: 1.hour

这有效吗?

1 个答案:

答案 0 :(得分:0)

我相信答案是“不”(或尚未)。我为此提出了一个问题,并提出了使之起作用的猴子补丁:https://github.com/rails/rails/issues/33424

这是猴子补丁,FWIW:

module CoreExtensions
module ActionView
  module PartialRenderer
    # Add the ability to specify cache options (expires_by) when using cached collection partials
    def fetch_or_cache_partial(cached_partials, order_by:)
      cache_options = @options.slice(:expires_in) # REVIEW: is Ruby 2.5-requiring code allowed here?
      order_by.map do |cache_key|
        cached_partials.fetch(cache_key) do
          yield.tap do |rendered_partial|
            collection_cache.write(cache_key, rendered_partial, cache_options)
          end
        end
      end
    end
  end
end