2011-02-10 6 views
8

Perché Google consiglia di inserire gli script js prima del codice di monitoraggio asincrono di analisi nel tuo html? http://code.google.com/apis/analytics/docs/tracking/asyncMigrationExamples.htmlPerché Google consiglia di inserire il codice asincrono di Analytics * dopo gli * script in <head>?

Ecco la citazione:

"Nota: per garantire l'operazione più snella della snippet asincrono rispetto ad altri script, si consiglia di posizionare altri script nel tuo sito in uno dei seguenti modi: prima che il frammento di codice di monitoraggio nella sezione del codice HTML"

risposta

4

Il lavoro di snippet di analisi asincrona consiste nel caricare uno script più intenso che ispeziona il browser dell'utente per tutti i tipi di informazioni per identificarli, in modo che possa eseguire il report al server di analisi. Tuttavia, poiché tutti questi dati di analisi non sono fondamentali per l'usabilità della pagina, Google desidera eseguirlo a proprio piacimento.

In teoria, potevano consigliare al programmatore di aggiungere lo snippet asincrono all'estremità inferiore della pagina, come ultimo elemento del corpo. Tuttavia, al fine di consentire al programmatore di acquisire gli eventi dell'interfaccia utente da inviare agli analytics, essi desiderano rendere la variabile _gaq da utilizzare in anticipo. Ad esempio, potresti avere un pulsante: <button onclick="_gaq.push(...)">Track</button>. Rendendo disponibile immediatamente _gaq, il bit di codice nello snippet asincrono farà accodare questi messaggi e il più pesante ga.js li invierà al server in un secondo momento.

Ora, alcuni implementation details: ga.js viene caricato con l'aggiunta di un nuovo elemento <script> alla testa documento con l'attributo async set. IE e WebKit caricheranno in modo asincrono i tag <script> inseriti dagli script. Firefox e Opera onoreranno l'attributo async e caricheranno lo script in modo asincrono. In entrambi i casi, ga.js viene caricato in modo asincrono, a discrezione del browser.

Infine, una volta ga.js viene eseguito, senza bloccare il rendering delle pagine a causa del caricamento asincrono, che può fare il pesante lavoro di raccolta di tutti i dati degli utenti e gli eventuali messaggi nella coda _gaq e inviarli al server.

Sommario: Questo approccio utilizza un piccolo script inline che inizializza alcune variabili chiave come _gaq che la pagina può accedere prima della ga.js script completo è pronto. Questo piccolo script aggiunge anche dinamicamente un tag <script src="ga.js"> al documento in modo tale che la maggior parte dei browser scaricherà ed eseguirà in modo asincrono, senza bloccare il rendering della pagina o la valutazione di script critici.

+0

Inizialmente ho ridiscusso questa risposta, ma dopo averlo letto e riletto di nuovo ha senso ... questa è stata la parte che ha fatto scattare la lampadina per me ... "Infine, una volta ga.js viene eseguito, senza bloccare il il rendering della pagina a causa del caricamento asincrono, può fare il lavoro pesante di raccogliere tutti i dati dell'utente e tutti i messaggi nella coda _gaq e inviarli al server "... quindi sono fondamentalmente se metti gli script sul in fondo alla pagina, stai dicendo a google che non ti dispiace che gli script vengano caricati DOPO la pagina quindi vai avanti e carica anche l'analisi prima di loro! – concept47

2

Come il browser carica la pagina, lo fa da cima a fondo. I browser hanno un numero limitato di "connessioni" che può utilizzare per caricare documenti collegati esternamente. Se metti il ​​loro script sopra il tuo, i tuoi script potrebbero non essere caricati fino a quando il loro è completo. Il codice analitico non è critico per la funzionalità della pagina, quindi possiamo salvarlo per l'ultimo.

+0

Ma google touts è l'affidabilità dei suoi server, arrivando a raccomandare che gli utenti non servano localmente ga.js, perché è ottimizzato e probabilmente memorizzato nella cache dei browser degli utenti in tutto il mondo ... non ha senso me che questo sarebbe il caso, soprattutto perché carica in parallelo e non blocca come altri script. – concept47

+0

Il concetto "in parallelo" è limitato dal numero di thread che un browser può dedicare alle richieste asincrone per i file collegati. Firefox, IIRC, è limitato a 6.Non importa quanto sia veloce il server di Google, è ancora limitato (in questo caso) dalla velocità della connessione CLIENT mentre il browser carica la pagina e tutti i documenti associati. Supponiamo che l'utente abbia una connessione remota: desideri caricare gli script prima di Google Analytics, poiché i tuoi ** script ** potrebbero influire sull'usabilità e Google certamente ** non lo fa, e potrebbe essere ** minuti ** prima del il prossimo thread di asynch è aperto. –

+0

^Se è questo il caso, allora perché consiglia (nello stesso link) di mettere questi script "* dopo * sia lo snippet del codice di tracciamento che tutto il contenuto della pagina (ad esempio nella parte inferiore del corpo HTML)"? – concept47

Problemi correlati