Pourquoi Google recommande-t-il de mettre le code asynchrone Google Analytics * après * dans <head>?

Pourquoi Google recommande de mettre js scripts avant le code de suivi asynchrone analytique dans votre html? Http://code.google.com/apis/analytics/docs/tracking/asyncMigrationExamples.html

Voici le devis:

"Remarque: Pour assurer le fonctionnement le plus simplifié de l'extrait asynchrone par rapport à d'autres scripts, nous vous recommandons de placer d'autres scripts dans votre site de l'une des façons suivantes: avant l'extrait du code de suivi dans la section de votre code HTML"

Le travail de l'extrait analytique asynchrone consiste à charger un script plus intensif qui inspecte le navigateur de l'utilisateur pour toutes sortes d'informations afin de les identifier, afin qu'il puisse faire rapport au serveur d'analyse. Cependant, étant donné que toutes ces données d'analyse ne sont pas essentielles à la convivialité de la page, Google souhaite la lancer à la veille du navigateur.

En théorie, ils pourraient conseiller au programmeur d'ajouter l'extrait asynchrone au fond de la page, en tant que dernier élément du corps. Cependant, afin de permettre au programmeur de capturer les événements UI à envoyer à l'analyse, ils souhaitent que la variable _gaq soit utilisée au début. Par exemple, vous pourriez avoir un bouton: <button onclick="_gaq.push(...)">Track</button> . En créant _gaq disponible dès le début, le petit bit de code dans l'extrait asynchrone mettra en file d'attente ces messages et le ga.js plus ga.js les enverra au serveur plus tard.

Maintenant, certains détails d'implémentation : ga.js est chargé en ajoutant un nouvel élément <script> à la tête de document avec l'ensemble d'attributs async . IE et WebKit chargeront de manière asynchrone les balises <script> insérées à partir des scripts. Firefox et Opera honoreront l'attribut async et chargeront également le script de manière asynchrone. Quoi qu'il en soit, ga.js est chargé de manière asynchrone, au niveau du navigateur.

Enfin, une fois que ga.js est exécuté, sans bloquer le rendu de la page en raison du chargement asynchrone, il peut faire le gros travail de collecte de toutes les données de l'utilisateur et de tous les messages dans la file d'attente _gaq et les envoyer au serveur.

Résumé: Cette approche utilise un petit script en ligne qui initialise certaines variables clés comme _gaq que votre page peut accéder avant que le script ga.js complet soit prêt. Ce petit script ajoute de manière dynamique une <script src="ga.js"> au document de telle sorte que la plupart des navigateurs le téléchargent et l'exécutent de manière asynchrone, sans bloquer le rendu de la page ou l'évaluation des scripts critiques.

Comme le navigateur charge la page, il le fait de haut en bas. Les navigateurs ont un nombre limité de "connexions" qu'il peut utiliser pour charger des documents externes. Si vous mettez leur script au-dessus de vous, vos propres scripts pourraient ne pas être chargés jusqu'à ce qu'ils soient complets. Le code analytique n'est pas critique pour la fonctionnalité de la page, afin que nous puissions l'enregistrer pour le dernier.