На локалке в девелопменте страница рендерится в 3-4 раза быстрее чем на боевом сервере в продакшене.
В качестве сервера на локалке - WEBrick 1.3.1. На боевом сервере - unicorn+nginx.
На локалке sata винт, 4гб озу, 4 ядра. На боевом сервере ssd винт, 24гб озу, 8 ядер.
Речь идет о миллисекундах, но они для меня принципиальны. Приходится подключать кэширование всего и вся, чтобы добиться таких же результатов как и на локалке. Данные мониторю через гем meta_request.
Так вопрос - что влияет на скорость рендеринга? Боевой сервер явно пошустрее это должен делать.
Меня смутил вопрос про рендеринг. Ты спрашиваешь про него, но тестируешь весть стек. Я думаю это не корректно. Если есть подозрение что рендеринг работает медленно, то стоит запустить бенчмарк в изоляции.
Можно подключить к приложению Newrelic и посмотреть слабые места.
Еще можно проверить версию рубт локально и на сервере.
Исключено. Данные в базе такие же.
Так же попробовал отключить рендерин (render :nothing => true) и просто итерировал данные из базки. Время ответа сервера сокращается на эти 300-500 мс.
new relic покажет те же цифры...
Асеты тоже исключены. Если закэшировать форму и сам список записей - то время сокращается до времени которое показывает на локалке. Получается вот эти два блока забирают все время.
Сделай профилирование шаблонизатора, на своей машине и на сервере, заодно запусти отдельно на сервере в режиме разработки с WEBrick, т.е воссоздай идентичные условия что на dev машине, что на srv
что касается отличий
- локально: только время преобразования данных в html
- на сервере: время построения html + передача данных => появляются такие факторы как скорость интернета и ширина канала.
Вы уверены что чисто измеряете время генерации страницы?
gem meta_request в связке с расширением для chrome в консоли браузера разбивает все по полочкам. В том числе какой партиал грузится и сколько по времени. Поэтому скорость интернета тут исключена. Голые цифры.