Улучшение времени отклика проекта RoR - PullRequest
0 голосов
/ 20 февраля 2012

В производстве время отклика очень велико из-за загрузки javascript, поэтому я ищу способ улучшить его без изменения какой-либо строки кода Обратите внимание, что я использую:

  • Ruby on Rails 3.2
  • Пассажир (Apache2)

Пожалуйста, дайте совет

Ответы [ 4 ]

2 голосов
/ 20 февраля 2012

Я понимаю, что вы говорите, что не можете изменить приложение, но загружать 100 КБ CSS и 1 МБ JS для первой страницы кажется чрезмерным.Я бы серьезно подумал о том, чтобы попытаться сократить ресурсы так, чтобы они загружались по требованию.

Не так уж много "исправлений", которые оставляют кодовую базу в покое, но некоторые из них:

  • Сжать ресурсы (например, используя «Content-encoding = gzip», http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/).
  • Оптимизировать порядок ресурсов (могут потребоваться незначительные изменения кода - http://code.google.com/speed/page-speed/docs/rtt.html#PutStylesBeforeScripts).
  • Распараллеливать загрузку по именам хостов (может потребоваться незначительное изменение кода - http://code.google.com/speed/page-speed/docs/rtt.html#ParallelizeDownloads).
  • . Поместите контент ближе к пользователю (используйте CDN).
  • Улучшите сквозную сетевую инфраструктуру.
  • Использование ресурсов aync (Это может создать у вас иллюзию более быстрого приложения. Страница может начать рендериться раньше, но в зависимости от характера вашего JS приложение все еще может быть использовано только после его полной загрузки.- http://code.google.com/speed/page-speed/docs/rtt.html#PreferAsyncResources)
  • Используйте заголовки истечения срока действия HTTP в далеком будущем, чтобы увеличить вероятность того, что пользователю, который уже посетил сайт, не нужно загружать контент снова.
0 голосов
/ 20 февраля 2012

Ожидается, что это просто раскрутка пассажира, но это должно произойти только при первой загрузке страницы после развертывания.

Если это происходит часто, это означает, что пассажир закрывает ваше приложение, поэтому вы должны посмотреть нанемного больше о настройке пассажира.

Один из вариантов - убедиться, что у вас всегда работает хотя бы один экземпляр, используя эту опцию:

PassengerMinInstances 1
0 голосов
/ 20 февраля 2012

Обратите внимание на атрибут defer: http://www.quirksmode.org/js/placejs.html

0 голосов
/ 20 февраля 2012

Загрузите свой JS из сети доставки контента.

Если вы покажете некоторую информацию о профилировании для времени загрузки (достаточно профилировщика инструментов разработчика Chrome), мы сможем дать лучший совет.

...