Hi,
I have around 2000 objects to render. Unfortunately the view rendering with jbuilder takes very long time, although the objects are small like this:
center: {lat: 48.8130685274225, lon: 10.0405494495457} lat: 48.8130685274225 lon: 10.0405494495457 n: "Aalen/Hirtenteich" st: null sy: null
The result query I pass to the view looks like this @resorts = Resort.where(:id => resort_ids).includes(:snow_reports)
A resort has many snow_reports. st and sy are fields from snow reports.
the view looks like this:
json.array!(@resorts) do |resort| json.cache!("resort_light_#{resort.id}") do
#json.partial! 'json_partials/snow_in_resort', resort: resort json.n resort.name json.sy resort.try(:snow_reports).last.try(:snow_valley) if resort.snow_reports json.st resort.try(:snow_reports).last.try(:snow_summit) if resort.snow_reports json.center do json.lat resort.centroid.lat json.lon resort.centroid.lon end end end
Rendered resorts/find.json.jbuilder (1649.0ms) Completed 200 OK in 1889ms (Views: 1593.1ms | ActiveRecord: 77.8ms | Solr: 0.0ms) In development mode the request takes 5s in chrome to run.
The first thing I ve done to speed up is changing the json gem to
gem 'oj' gem 'oj_mimic_json'
It speeds up slightly but not enough. I also tried active model serialization wich was about the same time, so I prefer to stick to jbuilder since it is convenient to assemble json objects. So how can I speed up rendering?
Help is highly appreciated since I am stuck for a week now.