web-dev-qa-db-fra.com

Comment fonctionne _gaq.Push (['_ trackPageLoadTime'])?

Comment fonctionne la fonction de vitesse du site de Google Analytics, _gaq.Push(['_trackPageLoadTime']),? Existe-t-il une documentation sur son fonctionnement?

102
ilhan

Modifier : à compter du 16 novembre 2011, le _trackPageLoadTime la fonction a été déconseillée et sa fonctionnalité a été définie comme paramètre par défaut . (Fonctionnellement parlant, il est passé d'une fonctionnalité opt-in à une fonctionnalité opt-out.)

_setSiteSpeedSampleRate est la nouvelle fonction pour régler la fréquence d'échantillonnage sur cette fonction; sa valeur par défaut est 1 (comme dans 1%). Pour désactiver l'utilisation de cette fonctionnalité de vitesse du site, vous devez passer un 0 à cette fonction:

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

Depuis le Centre d'aide Google Analytics :

Ce rapport prend actuellement en charge les navigateurs suivants: Chrome, Internet Explorer 9 et les versions précédentes d'Internet Explorer avec la barre d'outils Google installée. Plus précisément, les rapports sur la vitesse du site nécessitent des navigateurs prenant en charge l'interface HTML5 NavigationTiming ou la barre d'outils Google Internet Explorer installée

Ainsi, il n'implémente pas son propre minuteur, comme de nombreuses solutions homeback antérieures, pour déterminer le temps de chargement d'une page. Au lieu de cela, il utilise une nouvelle fonctionnalité HTML5, actuellement prise en charge uniquement dans les cas répertoriés ci-dessus, appelée NavigationTiming.

[~ # ~] modifier [~ # ~] : Ceci est désormais pris en charge dans Firefox 7

(Il est important de noter qu'il ne s'exécute pas à chaque chargement; à la place, il échantillonne actuellement environ 2% des pages vues, bien qu'il soit configuré sur essayez pour suivre toutes les charges de page sur 10% des visites ; comme de plus en plus de navigateurs prennent en charge l'API NavigationTiming, vous pouvez vous attendre à ce que le pourcentage total échantillonné commence à se rapprocher de 10%.)

Cette interface est accessible sous l'objet DOM window.performance (ou, dans les versions antérieures de Chrome, window.webkitPerformance), en utilisant l'attribut timing (donc, window.performance.timing). L'objet stocke les valeurs mesurées de tous les temps d'événements de chargement de page clé, et Google Analytics soustrait 2 des valeurs externes les plus importantes pour juger de la vitesse de chargement de page.

Pour une charge de Mashable.com sans cache, voici un exemple de ce qu'il mesure (en 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
}

Ces nombres sont Epoch millisecondes, ou millisecondes depuis le 1er janvier 1970. Je n'ai vu aucune documentation quant aux valeurs qu'ils soustraient pour générer leurs valeurs, mais à partir d'une inspection rapide de ga.js , il on dirait que c'est loadEventStart-fetchStart:

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

Pour l'exemple ci-dessus, cela signifie qu'il enregistrerait 4,14 secondes dans le _trackPageLoadTime appel.

D'après la spécification de synchronisation de navigation du W3C:

attribut fetchStart

Si la nouvelle ressource doit être récupérée à l'aide de HTTP GET ou équivalent, fetchStart doit renvoyer l'heure immédiatement avant que l'agent utilisateur ne commence à vérifier les caches d'application pertinents. Sinon, il doit renvoyer l'heure à laquelle l'agent utilisateur commence à récupérer la ressource.

attribut loadEventStart

Cet attribut doit renvoyer l'heure immédiatement avant le déclenchement de l'événement de chargement du document en cours. Il doit retourner zéro lorsque l'événement de chargement n'est pas encore déclenché.

Pour les curieux, l'ordonnance semble être la suivante:

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

Pour les 0 valeurs répertoriées:

unloadEventStart et unloadEventStart indiquent les heures de déchargement du chargement de la page précédente (mais uniquement si cette page a la même origine que la page en cours.)

redirectEnd et redirectStart mesurent la latence ajoutée s'il y avait une redirection HTTP dans la chaîne de chargement des pages.

secureConnectionStart semble être une mesure facultative pour mesurer le temps de connexion SSL.

181
Yahel