Кеширование всего тела ответа в рельсах - PullRequest
0 голосов
/ 24 августа 2018

Я хочу кэшировать весь ответ 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, я хочу, чтобы абсолютно все кэшированное уже было сериализовано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...