2009-07-27 14 views
6

Ho fatto qualche ricerca su questo, ma non riesco a trovare alcun tipo di best practice o raccomandazione - e forse perché non ce n'è. Sto usando tutti i tipi di plugin jQuery sul mio sito, oltre a TinyMCE e ad alcuni altri plugin, e al file JS specifico del mio sito. Oltre a questo, ho tre fogli di stile ..... e c'è di più quando il sito cresce!Quanti sono troppi in <HEAD>?

C'è qualche tipo di 'limite' o qualcosa che dovresti tenere d'occhio per includere gli script nel tag? So che ognuna di esse è un'altra richiesta HTTP che deve essere completata, ma se sono tutte minime e piccole come possono essere, ci saranno problemi?

+0

Non è il tempo di download tutto il limite che conta? Cosa stai chiedendo? Quanto è lento il download è troppo lento? –

+0

Sì, il tempo di download è tutto ciò che conta. Ma non conosco un modo per combinare facilmente i file JS e mi chiedevo quali fossero le opinioni degli altri su quanti siano "troppi". –

+2

L'utilità UNIX 'cat' è un buon modo per combinare file JS. – Quentin

risposta

8

Non va bene!

Vorrei raccomandare la combinazione di questi file in un js e uno css utilizzando uno script prima della distribuzione in live. Ci sono molte ragioni per cui questo non è buono, vedi il link qui sotto per maggiori informazioni:

http://developer.yahoo.com/performance/rules.html

Edit: Per rispondere ulteriormente No, non ci sono limiti al numero di file, ma la maggior parte dei browser può ha solo 2 connessioni (per un sito) a un server Web in qualsiasi momento e quindi caricherà i file js 2 alla volta. Lo YSlow plugin per firefox ti mostrerà un grafico di come i tuoi file vengono scaricati.

Se si utilizza ASP.NET, questo articolo codeproject potrebbe essere d'aiuto, se si è su Linux allora this potrebbe essere d'aiuto.

Edit: Un semplice file batch su Windows (da inserire nella vostra strumenti di compilazione) sarebbe

@echo off 
copy file1.js + file2.js + file3.js merged.js /b 
+1

Come si combinano i file JS? Basta copiare incolla tutto il codice in una cosa gigantesca e poi ridimensionarla? –

+0

C/P dopo la minificazione dovrebbe funzionare anche. – millimoose

+0

Tra questa e la libreria YUICompress, penso che dovrei essere OK. Grazie per tutti gli input! –

1

Più file CSS e JS si fanno riferimento su una pagina, più tempo ci vorrà per caricare. È molto meglio combinarli nel minor numero di file possibile.

+1

Molti browser apriranno 2 connessioni simultanee al server, paralizzando in modo efficace il download, ci sono trucchi che puoi fare per archiviare contenuti su altri domini/sottodomini per ingannare il browser nell'impostare più di quelle 2 connessioni per scaricare materiale. È un equilibrio tra dimensione e numero di file. – nos

2

Se ti aiuta a sentirti meglio molti altri siti vengono "caricati" in questo modo e i file js vengono memorizzati nella cache praticamente da tutti i browser moderni (e anche vecchi). Una cosa che potrebbe aiutare sarebbe collegare il file jquery a uno ospitato sul sito googleapis, perché potrebbe esserci la possibilità che qualche altro sito si colleghi allo stesso file jquery ospitato lì ed è già nella loro cache:

http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js

Il server Web dovrebbe già ottimizzare i file attivando automaticamente la compressione gzip, ma ricontrollare per assicurarsi.

+0

Sarà ancora molto lento sui carichi della "cache fredda", ad es. prima visita. E ci sono dati da Yahoo che dicono che un'alta percentuale di hit del sito sono cold cache. – Frozenskys

0

Non so se c'è esiste una buona risposta per questo tipo di domanda, ma se sei interessato all'ottimizzazione, ce ne sono un numero intero fatto da Yahoo !: http://developer.yahoo.com/performance/rules.html.

Personalmente, io tendo a ignorare la maggior parte di quelle regole, semplicemente perché il tipo di cose che sto costruendo non sono poi così grandi.

4

I browser hanno un limite al numero di richieste simultanee a un dominio, quindi possono rallentare il caricamento di altri elementi nella pagina. Ad esempio, IE8 has a limit of 6 concurrent connections, and IE7 has a limit of 2.

Si consiglia di combinare i file ospitati localmente, fare riferimento esternamente ad altri (ad esempio su Google) e potenzialmente spostare gli altri in fondo alla pagina in modo che non ritardino il caricamento.

È possibile combinare gli script con molti strumenti online, come jsCompress. Ha una scheda "Carica file", quindi puoi caricare tutti i tuoi file js e questo verrà compresso e ridotto.

Ci sono anche utility lato server che faranno questo per voi. Non dici quale tecnologia lato server stai usando, ma per esempio nel mondo PHP puoi usare Minify.

Problemi correlati