2012-04-24 19 views
13

Ogni richiesta di pagina nella mia app abbassa circa 30 risorse (JavaScripts e immagini), che sono sia roba di terze parti nei fornitori/e app/roba. Naturalmente, tutto il codice JavaScript è combinato e miniato in produzione, quindi va bene lì, ma in fase di sviluppo, è molto lento. Come 8 secondi per caricare la pagina e peggiorerà solo. È normale e cosa si può fare per accelerarlo?Le risorse si caricano lentamente in fase di sviluppo

Ho provato a spostare le immagini da beni/a pubblico /, ma li serve altrettanto lentamente. Circa 3-4 file al secondo.

Questo sta accadendo su un MacBook Pro veloce con WEBrick e Unicorn.

+0

Quanti lavoratori hai aperto in unicorno? WEBrick può gestire una richiesta alla volta, quindi è normale impiegare 8 secondi per 30 risorse. Se si configura l'unicorno con 4-5 lavoratori, verrà caricato molto più rapidamente – bcd

+0

Buona idea, ma ho appena provato questo con 2, 5 e 16. Purtroppo non ci sono differenze evidenti. Per essere chiari, sto impostando "worker_processes 5" in config/unicorn.rb ed eseguendo bundle exec unicorn_rails. – mahemoff

+0

Assicurati di controllare con firebug o gli strumenti di sviluppo di Chrome per essere sicuri di cosa ci vorrà: potrebbe essere la pagina principale e non le risorse. Ho quasi 20 risorse e il tempo necessario è inferiore a 1/2 secondo (pagine con pochi database funzionanti). – Matthew

risposta

25

Spegnendo il debug di asset dovrebbe migliorare la velocità un po '.

#development.rb 
config.assets.debug = false 
+0

grazie mille :) – achempion

+0

questo ha funzionato a meraviglia. – nfriend21

+0

qual è lo svantaggio di farlo? –

1

Io personalmente utilizzo il server thin. Stavo anche rallentando il mio ambiente di sviluppo (prendendomi + - 12 secondi). Aggiungilo fare la tua Gemfile:

group :development do 
    gem "thin" 
end 

fascio e correre con:

thin start 

Prima di beni precompilazione ho portato il mio tempo di caricamento fino a + -5 (con un po 'di configurazione e il refactoring del codice). Speranza che aiuta

enter image description here

-source sito sottile

+0

Grazie per i dati di profilazione. Purtroppo ha funzionato più veloce di me come unicorno. Prende 6 secondi per caricare circa 30 file, che è quello che serve fino a quando l'applicazione è eseguibile (quelli sono principalmente file JS/CSS). – mahemoff

0

si potrebbe verificare guard ei suoi plugin associati per precompilare le attività in background come li si modifica nel filesystem.

+0

Potrei dover ricorrere a questo.Penso che sarà molto tempo per configurarlo in un modo che funzioni ancora correttamente con la pipeline di asset in produzione. – mahemoff

9

Molto probabilmente, il problema è che Rails ricarica tutte le classi su ogni richiesta di risorse. Questa gemma: https://github.com/wavii/rails-dev-tweaks risolve il problema modificando le regole di caricamento automatico di Rails.

+0

Wow, questo è un sacco di ricariche. Non sapevo che succedesse, controllerò i ritocchi degli sviluppatori grazie. – mahemoff

+0

Fenomenale! In realtà ha funzionato. – mahemoff

+1

@mahemoff Se questo problema è risolto, dovrebbe essere contrassegnato come risposta. –

0

Credo che le rotaie debbano compilare le risorse ogni volta in fase di sviluppo, mentre per la produzione, tuttavia, a parte la prima volta ciò comporterebbe un rallentamento dello sviluppo.

Problemi correlati