Медленное время загрузки после обновления Rails до 3.1 - PullRequest
1 голос
/ 26 октября 2011

Кто-нибудь заметил экспоненциальную разницу во времени загрузки после обновления до Rails 3.1. Для загрузки очень простого запроса на мою локальную машину разработки требуется ~ 4 секунды. У кого-нибудь есть идеи, как решить эту проблему - подозреваете, что это как-то связано с новым конвейером активов Rails?

Ответы [ 4 ]

3 голосов
/ 13 ноября 2011

Взгляните на https://github.com/wavii/rails-dev-tweaks.

Rails запускает все хуки to_prepare для каждого запроса ресурса Sprockets в режиме разработки. Это включает в себя такие вещи, как автоматическая (повторная) загрузка вашего кода, а также работа с различными драгоценными камнями.

rails-dev-tweaks отключает to_prepare & reloading для любого запроса ресурса (и некоторых других - прочитайте первую часть его README) Ускоряет вашу среду разработки на огромную сумму для любого приличного размера проекта. Это также можно настроить для любых дополнительных запросов, которые вам нравятся

1 голос
/ 26 октября 2011

Если вы используете Passenger, то одной из причин замедления является то, что теперь все ресурсы обслуживаются конвейером ресурсов, а не веб-сервером (Apache / nginx). Первый намного медленнее, чем второй.

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

0 голосов
/ 26 октября 2011

Мое приложение работает на Rails 3.0, поэтому я не могу говорить об изменениях скорости загрузки, однако я настоятельно рекомендую использовать гем rails-dev-boost . Это значительно ускоряет время загрузки приложений в процессе разработки, приближая его к скорости производства.

Убедитесь, что вы прочитали инструкции по установке, поскольку это немного отличается от простого добавления gem 'rails-dev-boost в ваш Gemfile.

0 голосов
/ 26 октября 2011

Моя идея состояла бы в том, чтобы (и я хотел бы как можно скорее упаковать его в гем), разделить среду разработки на среды разработки с интерфейсом и бэкэндом:

интерфейс: - классы кэша -Компилируйте и обслуживайте ресурсы на лету - используйте для javascript + css

backend: - прекомпилируйте ресурсы (например, при запуске сервера) - перезагружайте классы и т. д. при каждом запросе

вы можете сделать это в основномдобавив четвертый файл в config/environments с соответствующими инструкциями config, но вам придется перезапускать сервер, когда вы переключаетесь между внешним и внутренним режимами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...