Почему конвейер активов замедлил localhost в Rails 3.1 - PullRequest
4 голосов
/ 15 января 2012

Я замечал невероятно медленное время загрузки страницы с помощью конвейера ресурсов в Rails 3.1. Каждый актив (css / js / image) загружается за полсекунды и секунды. Это действительно начинает мешать развитию. У меня нет таких проблем на производстве.

Есть ли решение? Приведенный ниже файл журнала показывает, как каждый отдельный актив загружается за 0,5 - 0,3 секунды:

# load of page itself...
...
Completed 200 OK in 1231ms (Views: 933.0ms | ActiveRecord: 15.6ms)


Started GET "/assets/blueprint/screen.css?body=1" for 127.0.0.1 at 2012-01-15 15:53:00 +0000
Served asset /blueprint/screen.css - 304 Not Modified (0ms)


Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-01-15 15:53:00 +0000
Served asset /application.css - 304 Not Modified (0ms)


Started GET "/assets/blueprint/print.css?body=1" for 127.0.0.1 at 2012-01-15 15:53:00 +0000
Served asset /blueprint/print.css - 304 Not Modified (0ms)


Started GET "/assets/universal/application.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:01 +0000
Served asset /universal/application.js - 304 Not Modified (2ms)


Started GET "/assets/universal/animate-color.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:01 +0000
Served asset /universal/animate-color.js - 304 Not Modified (0ms)


Started GET "/assets/universal/animate-shadow.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:02 +0000
Served asset /universal/animate-shadow.js - 304 Not Modified (0ms)


Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:02 +0000
Served asset /jquery_ujs.js - 304 Not Modified (0ms)


Started GET "/assets/universal/jquery.placehold.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:02 +0000
Served asset /universal/jquery.placehold.js - 304 Not Modified (0ms)


Started GET "/assets/universal/autoresize.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:03 +0000
Served asset /universal/autoresize.js - 304 Not Modified (0ms)


Started GET "/assets/universal/utilities.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:03 +0000
Served asset /universal/utilities.js - 304 Not Modified (0ms)


Started GET "/assets/universal/validators.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:03 +0000
Served asset /universal/validators.js - 304 Not Modified (0ms)


Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:04 +0000
Served asset /jquery.js - 304 Not Modified (0ms)


Started GET "/assets/whitelabel/pingpanel/pingpanel.css?body=1" for 127.0.0.1 at 2012-01-15 15:53:04 +0000
Served asset /whitelabel/pingpanel/pingpanel.css - 304 Not Modified (0ms)


Started GET "/assets/logo.png" for 127.0.0.1 at 2012-01-15 15:53:05 +0000
Served asset /logo.png - 304 Not Modified (0ms)


Started GET "/assets/application_bar_background.png" for 127.0.0.1 at 2012-01-15 15:53:05 +0000
Served asset /application_bar_background.png - 304 Not Modified (0ms)


Started GET "/assets/linen-new.jpg" for 127.0.0.1 at 2012-01-15 15:53:06 +0000
Served asset /linen-new.jpg - 304 Not Modified (0ms)

Эффект замедления может быть более отчетливо виден в Chrome Network Analyzer:

enter image description here

Ответы [ 2 ]

3 голосов
/ 16 января 2012

Вы можете получить ограниченное улучшение с rails-dev-tweaks, потому что Sprockets не использует автозагрузчик.Звездочки монтируются как традиционный маршрут.

Перейдите в файл development.rb и установите:

config.assets.debug = false

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

Если вам нужно выполнить отладку исходного кода, добавив debug = 1 в качестве параметра URL, Sprockets скажет разбивать файлы только для этого запроса.

3 голосов
/ 15 января 2012

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

Попробуйте гем rails-dev-tweaks , который дает вам больше контроля над тем, когда Rails перезагружает код. Должны исправить ваши проблемы с замедлением.

...