Кэшировать дорогой JBuilder в результате частых запросов

У меня есть конечная точка, которая генерирует ответ Json с помощью JBuilder. Однако этот Json очень медленно обрабатывается, и, поскольку этот запрос выполняется каждые несколько секунд и его не нужно каждый раз обновлять, я решил его кэшировать.

Это сложный Json с вложенными атрибутами и доступом к некоторым ассоциациям моделей.

Как я могу кэшировать результат json и просто отображать его пользователю каждые x минут?

файл.json.jbuilder:

json.array!(@photos) do |photo|
  json.extract! photo, :id, :title, :description, :image_updated_at
  json.camera_roll_image_url URI.join(request.url, photo.image.url(:camera_roll)).to_s
  json.original_image_url URI.join(request.url, photo.image.url).to_s
  json.has_picture true

  json.girl do 
    json.extract! photo.girl, :id, :name, :phone, :ddd, :country_code, :approved, :gender, :likes, :is_ad, :ad_type
    json.user_liked photo.girl.liked_by_user?(@user)
    if(photo.girl.is_ad == 1)
      json.ad_info do
        json.extract! photo.girl, :price, :description, :address, :ad_type
      end
    end
    json.is_featured photo.girl.is_featured? 
    json.avatar URI.join(request.url, photo.girl.avatar.url(:thumb)).to_s
    json.age photo.girl.age
    json.country_num_code photo.girl.country_num_code
    json.type photo.girl.type
  end

  json.check_in do
    json.extract! photo.girl.check_ins.last, :latitude, :longitude
  end

  json.userLat @userLat
  json.userLong @userLong

  json.likes photo.likes
  json.user_liked photo.liked_by_user? @current_user
end

person Giovani Barcelos    schedule 25.01.2017    source источник


Ответы (1)