2010-05-02 8 views
9

Diverse pagine del mio sito hanno diverse esigenze js (plugins principalmente), alcuni hanno bisogno di una lightbox, un po 'Dont, alcuni hanno bisogno di una giostra, un po' Dont eccdiversi piccoli file js per pagina VS. 1x file js del sito?

Per quanto riguarda la velocità pageloading dovrebbe ho opzione

1 - di riferimento ogni js file quando è necessario:

così una pagina potrebbe avere:

<script type="text/javascript" src="js/carousel/scrollable.js"></script>  
<script type="text/javascript" src="js/jquery.easydrag.js"></script> 
<script type="text/javascript" src="js/colorbox/jquery.colorbox-min.js"></script> 

e un altro avere:

<script type="text/javascript" src="st_wd_assets/js/carousel/scrollable.js"></script> 
<script type="text/javascript" src="st_wd_assets/js/typewatch.js"></script> 

opzione 2 - unire e comprimere in un unico file di site_wide.js:

in modo che ogni pagina sarebbe di riferimento:

<script type="text/javascript" src="js/site_wide.js"></script> 

ci sarebbe selettori inutilizzati/ascoltatori di eventi, però, come brutto è questo? vorrei includere eventuali note plugin/accreditamenti nella parte superiore delle site_wide.js file di

+0

http://stackoverflow.com/questions/2707499/improving-javascript-load-times-concatenation-vs-many-cache/2707544#2707544 http://stackoverflow.com/questions/1495338/use-cache -file-or-one-more-http-request –

risposta

7

Di solito è meglio per combine these and serve one file, che si impostano le intestazioni di cache in modo che il cliente tiene su di esso, non richiedendo che ogni pagina. Ricorda che se un selettore jQuery non trova nulla, non fa nulla quindi non è un grosso problema finché usi una buona porzione del tuo script ogni pagina, è giusto che abbia selettori senza corrispondenze.

Make sure it's being cached by the client though, di tutto il tuo lavoro è inutile. Assicurati anche che it's served minified and gzipped. E per ultimo, guarda l'hosting del tuo main libraries from a CDN.

+0

Ricordare che alcuni client (come gli iPhone) non memorizzano nella cache i file> 15 KB. Inoltre, strano che questa risposta http://stackoverflow.com/questions/2707499/improving-javascript-load-times-concatenation-vs-many-cache/2707544#2707544 consiglia il contrario. –

+3

@Marcel - Il limite è> 25kb (e questa è la ** dimensione non compressa **, quindi piuttosto bassa :) :) Poiché stai caricando la libreria ** stessa ** ogni pagina carica, però, la situazione jQuery su iPhone non è E 'fantastico finché non esce un build mobile. Se devi fare il round-trip per ** uno qualsiasi ** dei tuoi plugin (che dovresti con colorbox), è meglio farli tutti in una volta, poiché la richiesta stessa è ciò che è così doloroso su un dispositivo mobile, un file più grande con quella richiesta è molto più veloce di un altro. Come cliente AT & T con uno e un servizio di crap/spotty, posso attestare questo :) –

+0

Secondo questo commento http://www.niallkennedy.com/blog/2008/02/iphone-cache-performance.html#comment255665 il il limite di dimensione al giorno d'oggi è 15 KB anziché 25 KB (OS 3.1). Poiché non possiedo un iPhone, non posso testarlo. È bello sapere che le richieste HTTP possono essere dolorosamente lente sulle connessioni mobili, comunque. –

2

Combinali in un unico file esterno grande e miniato e includilo in ogni pagina. Dopo il caricamento della prima pagina, il browser lo memorizzerà nella cache, quindi l'utente lo scaricherà solo una volta.