Come funziona _gaq.push ()?

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

Modifica : dal 16 novembre 2011, la funzione _trackPageLoadTime è stata dichiarata obsoleta e la sua funzionalità è stata impostata come impostazione predefinita . (Dal punto di vista funzionale, è passata 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 distriggersre l’utilizzo della funzione Velocità del sito, devi passare 0 a questa funzione:

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

Dal Centro assistenza di Google Analytics :

Questo rapporto supporta attualmente i seguenti browser: Chrome, Internet Explorer 9 e versioni precedenti di Internet Explorer con Google Toolbar installato. Più in particolare, i rapporti Velocità sito richiedono browser che supportano l’interfaccia NavigationTiming HTML5 o la barra degli strumenti di Google Internet Explorer installata

Quindi, non implementa il proprio timer, come molte precedenti soluzioni di homeback, per capire quanto tempo impiega una pagina a caricarsi. Al contrario, utilizza una nuova funzione HTML5, attualmente supportata solo nei casi sopra elencati, denominata NavigationTiming.

EDIT : ora è supportato in Firefox 7

(È importante notare che non funziona su tutti i carichi, ma attualmente campiona circa il 2% delle visualizzazioni di pagina, sebbene sia configurato per provare a tenere traccia di tutti i carichi di pagina sul 10% delle visite, poiché più browser supportano l’API NavigationTiming, puoi aspettarti che la percentuale totale campionata inizi ad avvicinarsi al 10%.)

Questa interfaccia è accessibile sotto l’object DOM window.performance (o, nelle versioni precedenti di Chrome, window.webkitPerformance ), usando l’attributo timing (quindi, window.performance.timing ). L’object memorizza i valori misurati di tutti gli orari degli eventi 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 } 

Questi numeri sono millisecondi o millisecondi dal 1 ° gennaio 1970. Non ho visto alcuna documentazione su quali valori sottrarre per generare i loro valori, ma da una 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 sopra, ciò significa che registrerebbe 4,14 secondi nella chiamata _trackPageLoadTime .

Dalla specifica del tempo di navigazione W3C:

attributo fetchStart

Se la nuova risorsa deve essere recuperata utilizzando HTTP GET o equivalente, fetchStart deve restituire l’ora immediatamente prima che l’agente utente inizi a controllare le eventuali cache delle applicazioni pertinenti. In caso contrario, deve restituire l’ora in cui l’agente utente avvia il recupero della risorsa.

attributo loadEventStart

Questo attributo deve restituire l’ora immediatamente prima che venga generato l’evento di caricamento del documento corrente. Deve restituire zero quando l’evento load non è ancora stato triggersto.

Per le parti curiose, 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:

unloadEventStart e unloadEventStart mostrano i tempi per lo scarico del caricamento della pagina precedente (ma solo se quella pagina ha la stessa origine di quella corrente).

redirectEnd e redirectStart misurano la latenza aggiunta in caso di reindirizzamento HTTP nella catena di caricamento della pagina.

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