webentwicklung-frage-antwort-db.com.de

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

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

102
ilhan

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

_setSiteSpeedSampleRate Ist 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 dieser Funktion einen 0 Übergeben:

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

Aus 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 auf denen die Google Internet Explorer-Symbolleiste installiert ist

Daher implementiert es keinen eigenen Zeitgeber, wie es bei vielen früheren Homeback-Lösungen der Fall war, 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.

EDIT : Dies wird jetzt in Firefox 7 unterstützt

(Wichtig zu beachten ist, dass es nicht bei jedem Ladevorgang ausgeführt wird. Stattdessen werden derzeit etwa 2% der Seitenaufrufe erfasst, obwohl es so konfiguriert ist, dass try alle Seitenladevorgänge bei 10% der Besuche protokolliert werden ; Da mehr Browser die NavigationTiming-API unterstützen, kann davon ausgegangen werden, dass der gesamte Prozentsatz der Stichprobe sich 10% nähert.)

Der Zugriff auf diese Schnittstelle erfolgt über das DOM-Objekt window.performance (Oder in früheren Chrome-Versionen window.webkitPerformance) Mit dem Attribut timing (also window.performance.timing). . Das Objekt speichert gemessene Werte aller wichtigen Seitenladeereigniszeiten und Google Analytics subtrahiert 2 der wichtigeren äußeren Werte, um die Geschwindigkeit des Seitenladens zu beurteilen.

Für eine Ladung von Mashable.com ohne Cache sehen Sie 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, von welchen Werten sie subtrahieren, um ihre Werte zu erzeugen, sondern anhand einer flüchtigen Betrachtung des ga.js sieht aus wie es ist 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 es 4,14 Sekunden im _trackPageLoadTime - Aufruf aufzeichnet.

Aus der W3C Navigation Timing-Spezifikation:

Attribut fetchStart

Wenn die neue Ressource mit HTTP GET oder einer entsprechenden Methode abgerufen werden soll, muss fetchStart die Zeit unmittelbar vor dem Beginn der Überprüfung relevanter Anwendungscaches durch den Benutzeragenten zurückgeben. 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 sieht die Bestellung wie folgt aus:

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

Für die aufgelisteten 0-Werte:

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

redirectEnd und redirectStart messen die Latenz, die hinzugefügt wurde, wenn in der Ladekette der Seite eine HTTP-Umleitung vorhanden war.

secureConnectionStart scheint eine optionale Messung für die Messung der SSL-Verbindungszeit zu sein.

181
Yahel