джун, первый год. страница каталога, 48 товаров, на проде открывается 2,5 секунды. bullet поставил, N+1 не находит. в логе:
Completed 200 OK in 2480ms (Views: 2310.4ms | ActiveRecord: 96.2ms)
база вроде быстрая, а что тогда медленное? Rails 8.1, Hotwire
Раз Views 2,3 секунды, а база 96 мс, смотрите в рендер. Поставьте rack-mini-profiler вместе с stackprof и откройте страницу с ?pp=flamegraph, станет видно, какой partial и какой хелпер едят время. Частые причины: partial рендерится в цикле по одному, хелпер внутри карточки что-то читает с диска или ходит в кэш на каждый товар, варианты картинок генерируются прямо при рендере.
нашёл. в карточке хелпер для цены каждый раз заново читал и парсил yaml со справочником валют, 48 раз на страницу. вынес загрузку в константу при старте и ещё перевёл рендер на коллекцию с кэшем:
<%= render partial: "products/product", collection: @products, cached: true %>
теперь 180 мс холодная, 60 мс из кэша
cached: true для коллекции вообще недооценённая штука: все ключи читаются из кэша одним запросом, а не по одному на товар.