Wie funktioniert _gaq.push (['_ trackPageLoadTime'])?

102

Wie funktioniert die Google Analytics Site Speed-Funktion _gaq.push(['_trackPageLoadTime'])? Gibt es eine Dokumentation darüber, wie es funktioniert?

ilhan
quelle
2
@ stuken.yuri Das ist die Syntax für den asynchronen Aufruf von Google Analytics. Im Grunde bedeutet dies: Fügen Sie die Funktion (den Namen) _trackPageLoadTimein eine Warteschlange ein und lösen Sie dann alle Funktionen in dieser Warteschlange nacheinander aus, sobald ga.js geladen wurde. Damit können Sie sicher ga.jsasynchron laden .
Yahel

Antworten:

181

Bearbeiten : Ab dem 16. November 2011 ist die _trackPageLoadTimeFunktion veraltet und ihre Funktionalität wurde als Standardeinstellung festgelegt . (Funktionell hat es sich von einer Opt-In-Funktion zu einer Opt-Out-Funktion entwickelt.)

_setSiteSpeedSampleRateist die neue Funktion zum Einstellen der Abtastrate für diese Funktion. Der Standardwert ist 1(wie in 1%). Um die Verwendung der Site Speed-Funktion zu deaktivieren, müssen Sie ein 0an diese Funktion übergeben:

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

In der Google Analytics-Hilfe :

Dieser Bericht unterstützt derzeit die folgenden Browser: Chrome, Internet Explorer 9 und frühere Versionen von Internet Explorer mit installierter Google Toolbar. Insbesondere erfordern die Site Speed-Berichte Browser, die die HTML5 NavigationTiming-Oberfläche unterstützen oder die Google Internet Explorer-Symbolleiste installiert haben

Es implementiert also keinen eigenen Timer, wie es viele frühere Homeback-Lösungen getan haben, um herauszufinden, wie lange das Laden einer Seite dauert. Stattdessen wird eine neue HTML5-Funktion namens NavigationTiming verwendet, die derzeit nur in den oben aufgeführten Fällen unterstützt wird.

BEARBEITEN : Dies wird jetzt in Firefox 7 unterstützt

(Es ist wichtig zu beachten, dass es nicht bei jedem Ladevorgang ausgeführt wird. Stattdessen werden derzeit etwa 2% der Seitenaufrufe abgetastet. Es ist jedoch so konfiguriert, dass versucht wird , alle Seitenladevorgänge bei 10% der Besuche zu verfolgen. Da mehr Browser die NavigationTiming-API unterstützen, Sie können davon ausgehen, dass sich der Prozentsatz der Gesamtstichprobe allmählich 10% nähert.)

Auf diese Schnittstelle wird unter dem DOM-Objekt window.performance(oder in früheren Versionen von Chrome window.webkitPerformance) mit dem timingAttribut (so, window.performance.timing) zugegriffen . Das Objekt speichert Messwerte aller wichtigen Ereigniszeiten für das Laden von Seiten, und Google Analytics subtrahiert zwei der wichtigeren äußeren Werte, um die Geschwindigkeit beim Laden von Seiten zu beurteilen.

Für eine Ladung von Mashable.com ohne Cache ist hier ein Beispiel, was es misst (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
}

Diese Zahlen sind Epochen-Millisekunden oder Millisekunden seit dem 1. Januar 1970. Ich habe keine Dokumentation darüber gesehen, welche Werte sie subtrahieren, um ihre Werte zu generieren, aber bei einer flüchtigen Betrachtung der ga.js sieht es so aus loadEventStart-fetchStart:

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

Für das obige Beispiel bedeutet dies, dass 4,14 Sekunden im _trackPageLoadTimeAnruf aufgezeichnet werden .

Aus der W3C Navigation Timing-Spezifikation:

fetchStart-Attribut

Wenn die neue Ressource mit HTTP GET oder einem gleichwertigen Element abgerufen werden soll, muss fetchStart die Zeit zurückgeben, bevor der Benutzeragent mit der Überprüfung aller relevanten Anwendungscaches beginnt. Andernfalls muss die Zeit zurückgegeben werden, zu der der Benutzeragent mit dem Abrufen der Ressource beginnt.

loadEventStart-Attribut

Dieses Attribut muss die Zeit unmittelbar vor dem Auslösen des Ladeereignisses des aktuellen Dokuments zurückgeben. Es muss Null zurückgeben, wenn das Ladeereignis noch nicht ausgelöst wurde.

Für Neugierige scheint die Reihenfolge wie folgt zu sein:

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

Für die 0 aufgelisteten Werte:

unloadEventStartund unloadEventStartzeigen Sie die Zeiten für das Entladen der vorherigen Seite an (jedoch nur, wenn diese Seite denselben Ursprung wie die aktuelle hat.)

redirectEndund redirectStartmessen Sie die hinzugefügte Latenz, wenn in der Seitenladekette eine HTTP-Umleitung vorhanden war.

secureConnectionStart scheint eine optionale Messung zur Messung der SSL-Verbindungszeit zu sein.

Yahel
quelle
6
Du rockst Kerl, im Ernst. Vielen Dank für diese ausführliche Antwort.
Sid
secureConnectionStartist eine Standardmessung, die der Browser (oder was auch immer den Inhalt verarbeitet) optional melden kann. w3c-test.org/webperf/specs/NavigationTiming/…
Eric