Как оптимизировать скорость рендера haml?

Здравствуйте! Страница на haml рендерится почти 200мс. Для сравнения запросы в бд выполняются за 6мс.
Пробовал переписать на slim, результат стал меньше, но не сильно. Путём экспериментов выяснил, что большую часть времени занимает each-цикл по элементам из бд (ActiveRecord_Relation ). Элементов этих ровно 50 на одной странице.
Даже если внутри each выводить только основную информацию о каждой записи, цикл ну очень долгий
Это нормальная ситуация? Как ускорить рендер страниц?
  • Вопрос задан
  • 269 просмотров
Пригласить эксперта
Ответы на вопрос 5
@SidhArt
N+1, pagination, кэширование. Кэширование наибольший прирост.
Ответ написан
Комментировать
doromones
@doromones
Работаю с php/ruby
apidock.com/rails/ActiveRecord/QueryMethods/includes
TestModel.includes(:relation_table).where(...)
Попробуй так
Ответ написан
2ord
@2ord
Можно как написал Антон Радушев, но лучше получить все данные заранее в контроллере (50 шт.), а во вьюхе только вставлять их. Тогда внутри цикла HAML-шаблона не будет расходов на БД вызовы.
Ответ написан
@Splite Автор вопроса
Сделал кэширование части шаблона с таблицей, стало на порядок быстрее конечно, но все равно не радует.
Очень нравится RoR, писать на нем это чистое удовольствие.
Но нормальная ли ситуация, когда таблица из 50 элементов рендерится 200мс? Неужели он настолько медленный? И это при том, что запросы в бд занимают меньше 5мс. Дополнительных запросов цикл точно не создает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы