2010-09-12 10 views
6

Sono molto curioso di sapere come le tue app Rails includono javascript. Ad esempio:In che modo la tua app per rails include javascript?

  • pacchetti tutto il codice js in un unico file e lo servi per tutte le richieste?
  • caricate condizionatamente determinati js in base al controller/azione?
  • quali strumenti o tecniche usi, ad esempio: asset_packager, compressore yui, ruote dentate, implementazione ispirata a BigPipe?

Un po 'di background: lavoro su un'enorme app Rails che è molto pesante per JS. Attualmente, tutti i js sono minimizzati e serviti da un singolo file. Ciò rende le cose molto convenienti in quanto tutti i framework e i widget sono disponibili ovunque. Sto iniziando a mettere in discussione questo approccio, sembra un po 'folle fare in modo che tutti gli utenti paghino il prezzo per alcuni js che potrebbero non vedere mai. Sporcare il codice con lo script include sembra schifoso e difficile poiché grandi porzioni del sito distribuiscono contenuti tramite ajax.

Qualcuno ha qualche consiglio da condividere?

Grazie mille!

risposta

1

Prima di tutto, prova questo plugin per Firefox: http://developer.yahoo.com/yslow/. Ti aiuterà a determinare le fonti di rallentamento e ad analizzare l'utilizzo degli script e a suggerire miglioramenti.

Inoltre, dai un'occhiata a questo articolo di Yahoo sulle migliori pratiche per siti Web veloci: http://developer.yahoo.com/performance/rules.html. Questo consiglio vale per tutti i siti Web, non solo per i binari.

3

Ci sono diversi trade-off da considerare:

  • Se si dispone di un unico grande file JS, allora dovrebbe essere memorizzato nella cache per tutte le pagine. Ma se solo poche pagine usano JS, questo non va bene.
  • Se le pagine non condividono JS, è possibile che si desideri utilizzare il caricamento "necessario" per ogni singolo JS di ogni pagina. Ma non vuoi troppi carichi poiché ogni fetch JS ha il proprio overhead.

Note

  • assicurarsi che tutti i vostri JS verrà memorizzata nella cache per sempre sui vostri clienti. Utilizzare i numeri di versione nei nomi file o negli URL (foo.js? 123)
  • Assicurarsi che i file JS siano ridotti a icona.
  • Assicurarsi che il server Web abbia attivato la codifica gzip.
  • È possibile utilizzare una rete di distribuzione di contenuti a basso costo per il proprio JS come Amazon Cloudfront o uno dei loro concorrenti.

risposte alle vostre domande specifiche

Ti pacchetto tutto il codice js in un singolo file e servire per tutte le richieste?

Tutte le richieste ricevono un grande file di JS che ha il codice di libreria e JS utilizzati nella maggior parte delle pagine. Alcune pagine specifiche ricevono anche un file JS aggiuntivo.

caricate condizionatamente determinati js in base al controller/azione?

Sì, per un paio di pagine JS molto pesanti, tali pagine ricevono un file JS aggiuntivo. Tutte le pagine ricevono il file reg JS e sono memorizzate nella cache/disponibili per tutte le pagine.

quali strumenti o tecniche usi, ad esempio: asset_packager, compressore yui, ruote dentate, implementazione ispirata a BigPipe?

  • YUI Compressor
  • S3 per servire il mio dominio assets.foo.com
  • compiti rake per unire/minimizzare più file di origine JS
Problemi correlati