Come funziona _gaq.push (['_ trackPageLoadTime'])?


102

Come funziona la funzione Velocità sito di Google Analytics,, _gaq.push(['_trackPageLoadTime'])? C'è qualche documentazione su come funziona?


2
@ stuken.yuri che è la sintassi per la chiamata asincrona di Google Analytics. Fondamentalmente significa: aggiungi la funzione (nome) _trackPageLoadTimesu una coda, quindi attiva tutte le funzioni in quella coda in sequenza una volta che ga.js è stato caricato. Ti consente di caricare in ga.jsmodo sicuro in modo asincrono.
Yahel

Risposte:


181

Modifica : dal 16 novembre 2011, la _trackPageLoadTimefunzione è stata deprecata e la sua funzionalità è stata impostata come impostazione predefinita . (Funzionalmente parlando, è passato dall'essere una funzione di opt-in a una funzione di opt-out.)

_setSiteSpeedSampleRateè la nuova funzione per impostare la frequenza di campionamento su questa funzione; il suo valore predefinito è 1(come nell'1%). Per disattivare questa funzione della velocità del sito, è necessario passare 0a questa funzione:

_gaq.push(["_setSiteSpeedSampleRate", 0]);

Dal Centro assistenza di Google Analytics :

Questo rapporto attualmente supporta i seguenti browser: Chrome, Internet Explorer 9 e versioni precedenti di Internet Explorer con Google Toolbar installata. Più specificamente, i rapporti sulla velocità del sito richiedono browser che supportino l'interfaccia di navigazione HTML5 o che abbiano installato la barra degli strumenti di Google Internet Explorer

Quindi, non implementa il proprio timer, come molte precedenti soluzioni di homeback, per capire quanto tempo ci vuole per caricare una pagina. Utilizza invece una nuova funzionalità HTML5, attualmente supportata solo nei casi sopra elencati, chiamata NavigationTiming.

EDIT : ora è supportato in Firefox 7

(È importante notare che non viene eseguito a ogni caricamento; invece, attualmente campiona circa il 2% delle visualizzazioni di pagina, sebbene sia configurato per provare a tenere traccia di tutti i caricamenti di pagina nel 10% delle visite; poiché più browser supportano l'API NavigationTiming, puoi aspettarti che la percentuale campionata totale inizi ad avvicinarsi al 10%.)

A questa interfaccia si accede dall'oggetto DOM window.performance(o, nelle versioni precedenti di Chrome, window.webkitPerformance), utilizzando l' timingattributo (so, window.performance.timing). L'oggetto memorizza i valori misurati di tutti i tempi dell'evento di caricamento della pagina chiave e Google Analytics sottrae 2 dei valori esterni più importanti per giudicare la velocità di caricamento della pagina.

Per un carico di Mashable.com senza cache, ecco un esempio di ciò che misura (in Chrome 11):

timing = {
  connectEnd: 1306677079337,
  connectStart: 1306677079337,
  domComplete: 1306677083482,
  domContentLoadedEventEnd: 1306677081765,
  domContentLoadedEventStart: 1306677081576,
  domInteractive: 1306677081576,
  domLoading: 1306677079478,
  domainLookupEnd: 1306677079337,
  domainLookupStart: 1306677079337,
  fetchStart: 1306677079337,
  loadEventEnd: 1306677083483,
  loadEventStart: 1306677083482,
  navigationStart: 1306677079337,
  redirectEnd: 0,
  redirectStart: 0,
  requestStart: 1306677079394,
  responseEnd: 1306677079669,
  responseStart: 1306677079476,
  secureConnectionStart: 0,
  unloadEventEnd: 0,
  unloadEventStart: 0
}

Quei numeri sono millisecondi dell'epoca, o millisecondi dal 1 gennaio 1970. Non ho visto alcuna documentazione su quali valori sottraggono per generare i loro valori, ma da un'ispezione superficiale del ga.js , sembra che sia loadEventStart-fetchStart:

h&&h[c]!=k&&h.isValidLoadTime?b=h[c]:e&&e[a]&&(b=e[a].loadEventStart-e[a].fetchStart);

Per l'esempio precedente, ciò significa che registrerebbe 4,14 secondi nella _trackPageLoadTimechiamata.

Dalla specifica W3C Navigation Timing:

attributo fetchStart

Se la nuova risorsa deve essere recuperata utilizzando HTTP GET o equivalente, fetchStart deve restituire l'ora immediatamente prima che il programma utente inizi a controllare qualsiasi cache dell'applicazione pertinente. Altrimenti, deve restituire l'ora in cui l'agente utente inizia a recuperare la risorsa.

attributo loadEventStart

Questo attributo deve restituire l'ora immediatamente prima dell'attivazione dell'evento di caricamento del documento corrente. Deve restituire zero quando l'evento di caricamento non è ancora stato attivato.

Per i curiosi, l'ordine sembra essere il seguente:

connectStart, connectEnd, domainLookupStart, domainLookupEnd, fetchStart, navigationStart, requestStart, responseStart, domLoading, responseEnd, domContentLoadedEventStart, domInteractive, domContentLoadedEventEnd, domComplete, loadEventStart, loadEventEnd

Per i valori 0 elencati:

unloadEventStarte unloadEventStartmostra i tempi di scaricamento del caricamento della pagina precedente (ma solo se quella pagina ha la stessa origine di quella corrente).

redirectEnde redirectStartmisurare la latenza aggiunta se c'era un reindirizzamento HTTP nella catena di caricamento della pagina.

secureConnectionStart sembra essere una misura opzionale per misurare il tempo di connessione SSL.


6
Sei un tipo rock, seriamente. Grazie per una risposta così elaborata.
Sid

secureConnectionStartè una misurazione standard, ma è facoltativa per il browser (o qualunque cosa gestisca il contenuto) da segnalare. w3c-test.org/webperf/specs/NavigationTiming/…
Eric,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.