Что-то не так с конвейером активов? - PullRequest
6 голосов
/ 22 июня 2011

После "обновления" до Rails 3.1 мое приложение действительно медленно в режиме разработки

(> 30 на запрос)

У меня много изображений, и оноКажется, что большая часть этой временной задержки - конвейер ресурсов, обрабатывающий каждый запрос GET для каждого изображения.

У этой проблемы нет в режиме Staging или Production, поскольку активы кэшируются и т. д.

Isесть что-то, что мне не сказали, или это то, как мы должны работать сейчас?

Ответы [ 4 ]

4 голосов
/ 12 июля 2011

Запросы могут быть медленными, если у вас есть гемы или части вашего приложения, которые загружают код в начале каждого запроса - или просто ссылаются на части вашего приложения, в результате чего большая часть его загружается.Для большинства из них автозагрузчик является основной причиной задержки запроса.

Автоматический перегрузчик rails удаляет любые автозагрузимые классы / модули / и т. Д. В начале каждого запроса и может вызватьзначительные задержки в начале каждого запроса, так как Rails перезагружает все необходимые ему исходные файлы.

Возможно, вы захотите попробовать поиграть с https://github.com/wavii/rails-dev-tweaks,, что дает вам детальный контроль над тем, какие запросы вызывают автозагрузчикЭто действительно не является устранением основной причины (в начале каждого запроса выполняется дополнительная работа, которую, вероятно, не требуется), - но это, безусловно, смягчает большинство таких проблем.

0 голосов
/ 26 июня 2011

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

http://martinciu.com/2011/06/rails-3-1-and-slow-asset-pipeline.html

0 голосов
/ 04 июля 2011

Вы можете использовать задачу rake:

rake assets: precompile RAILS_ENV = development RAILS_ASSETS_NONDIGEST = true

И, как уже упоминалось выше, не забудьте включить public / assets / *в .gitignore

0 голосов
/ 22 июня 2011

Тем временем:

cp -R app/assets/images public/assets

действительно помогает

не забудьте добавить public/assets/* к .gitignore

...