将整个响应主体缓存在Rails中

时间:2018-08-24 18:13:50

标签: ruby-on-rails caching active-model-serializers

我想在Rails中缓存整个JSON响应。 JSON已使用ActiveModel序列化。我不想每次都序列化它。这是一个复杂的大型列表,不会经常更改。

现在我有

def index
  bar = Bar.find(params[:bar_id])
  foos = Foos.where(bar_id = bar.id)
  render json: foos, status, :ok
end

我想做类似的事情

def index
  bar = Bar.find(params[:bar_id])
  response = Rails.cache.fetch(request.env['PATH_INFO']) do
    foos = Foos.where(bar_id = bar.id)
    render json: foos, status: :ok
  end
  response
end

我该怎么做?

编辑:为澄清起见,我想保存已构建的内容,就像缓存已模板化的视图一样。原因是我有数百条这样的记录,每个记录又有大约十二个子记录,每个子记录都有自己的六个子记录。平均而言,其中的大约一半最终必须通过db调用重新加载。序列化程序还必须将其中一些属性模板化为HTML或运行项目计数,并对其中的许多属性进行排序。因为从总体上讲,这是API上最常见的端点,所以我绝对希望所有已序列化的内容都被缓存。

0 个答案:

没有答案