2012-01-15 19 views
5

? He estado notando tiempos de carga de página increíblemente lentos con la canalización de recursos en Rails 3.1. Cada activo (css/js/image) toma entre medio segundo y un segundo para cargarse. Esto realmente está comenzando a obstaculizar el desarrollo. No tengo los mismos problemas en producción.¿Por qué el inventario de activos ralentizó localhost en Rails 3.1

¿Hay alguna solución? El archivo de registro a continuación muestra cómo cada activo individual se está cargando 0,5 - 0.3 del un segundo:

# 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) 

El efecto de la desaceleración puede verse más claramente en el analizador de red chrome:

enter image description here

Respuesta

3

Cada vez que se carga un activo, se debe pasar a través de Rails env y Rails volverá a cargar todo el código. Cuando tiene muchos activos, esto se suma a las cargas lentas de la página.

Pruebe la gema rails-dev-tweaks que le da más control sobre cuándo Rails vuelve a cargar el código. Debería arreglar sus problemas de desaceleración.

+1

'carriles-dev-tweaks' hizo un excelente trabajo, gracias. El tiempo medio de carga de la página disminuyó de 9 segundos a 2.6 segundos. –

4

Puede obtener una mejora limitada con rails-dev-tweaks porque Sprockets no utiliza el autocargador. Piñones se monta como una ruta tradicional.

Ir al archivo de development.rb y ajuste:

config.assets.debug = false 

Esto cambiará el modo de desarrollador a servir sólo un archivo en lugar de muchos, y esto debería acelerar las cosas un poco.

Si necesita hacer alguna depuración de fuentes agregando debug = 1 como parámetro de URL le dirá a Sprockets que divida los archivos para esa solicitud.

+1

Antes de agregar 'rails-dev-tweaks' experimenté con esto y tuvo un gran impacto. Después de usar dev-tweaks, descubrí que cambiar la configuración de depuración de los activos casi no tenía ningún efecto, supongo que porque los dev-tweaks realmente garantizaban que ni siquiera los golpearan. –

Cuestiones relacionadas