2012-01-15 5 views
5

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

Есть ли решение? Файл журнала ниже показывает, как каждый отдельный актив погрузки в 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) 

эффект замедления может быть более четко видно на хром сетевого анализатора:

enter image description here

ответ

3

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

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

+1

'rails-dev-tweaks' отлично поработал, спасибо. Среднее время загрузки страницы сократилось с 9 до 2.6. –

4

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

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

config.assets.debug = false 

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

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

+1

Перед добавлением 'rails-dev-tweaks' я экспериментировал с этим, и это оказало огромное влияние. После использования dev-tweaks, хотя я обнаружил, что изменение настройки отладки в активах практически не повлияло - я полагаю, потому что dev-tweaks фактически гарантировали, что они даже не попали. –

Смежные вопросы