BlogBang

Optimisez le chargement de vos pages en changeant votre code Analytics

capturezu3 Des statistiques de téléchargement avec Google Analytics

Le souci avec les appels javascript, c’est que pendant que le browser l’exécute, il ne se passe rien d’autre… Du coup, si votre javascript est lourd et que vous l’avez placé en début de page, cette dernière mettra du temps à apparaitre, devant attendre que le JS se soit complétement exécuté.

Jusqu’à maintenant, une règle de base de l’optimisation est donc de placer ses javascripts le plus en bas de ses pages HTML, c’est à dire juste avant la balise fermante </body> pour que tout le contenu d’une page ai le temps de se charger sans être bloquée par le code javascript.

Et si je vous raconte tout ça, c’est parce que Google, dans sa volonté d’accélérer le chargement du web, a publié dans sa doc, un petit bout de code qui permet d’appeller vos stats analytics de manière asynchrone, c’est à dire sans bloquer le navigateur. Pour cela, il suffit de remplacer votre code analytics par celui-ci, en prenant soin de bien changer le code UA-XXXXX-X par le votre.

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script');
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    ga.setAttribute('async', 'true');
    document.documentElement.firstChild.appendChild(ga);
  })();

</script>

Et où le placer ? Et bien juste avant la balise fermante </head> par exemple, puisque là, ça ne bloquera plus le chargement des pages. Donc vous pouvez vous permettre de le remonter dans vos pages.

Je l’ai mis en place sur Korben.info, on verra sur le long terme.

Edit : et j’ai appris ce matin dans le métro, via Philippe que Google avait rajouté un outil dans Webmaster Tools qui permet de voir où on se situe en terme de vitesse de chargement de son site…(Dans l’onglet Labs) avec le lien qui va bien vers son plugin Firefox PageSpeed.

Publicité

Je vous recommande aussi la lecture des sujets suivants


Faites un lien vers cette news sur votre site



26 commentaires

  1. xbb Reply to this comment


    Intéressant. Il faut que je teste ça !!

    Posté le 3 décembre 2009 à 13:39:22

  2. toto Reply to this comment


    Ça fait déjà un petit temps que ça existe. C’est une copie (ou Yahoo! a copié) de Yslow qui s’intègre dans le plugin firebug.

    Posté le 3 décembre 2009 à 13:51:11

  3. lemulot Reply to this comment


    En parlant chargement … mais page sont plutot longue mais je remarque qu’il y a pas mal de « latence » (barre clair dans le developer tools de chrome)
    Comment reduire cela ?

    Posté le 3 décembre 2009 à 13:51:33

  4. Julien Reply to this comment


    « Et où le placer ? Et bien juste avant la balise fermante </head> »

    –> « avant la balise fermante </body> »

    http://www.google.com/support/analytics/bin/answer.py?hl=fr&answer=55488

    Posté le 3 décembre 2009 à 13:57:58

  5. Flex Reply to this comment


    Quel peut être l’intérêt de remonter son code GG Analytics en haut de page ?

    il est bien là, en bas, tout au chaud non ? :-)

    Posté le 3 décembre 2009 à 14:17:54

  6. lemulot Reply to this comment


    @Flex: L’important ici est surtout le cote asynchrone .. du coups, oui la place n’a plus d’importance.
    Cependant, je préfère dans le head, c’est une question d’organisation.

    Posté le 3 décembre 2009 à 14:22:29

  7. JS Reply to this comment


    Mouais, ok, c’est sympa, mais pour le coup, je ne vois pas vraiment l’intérêt.

    Le code javascript de GA est déjà en bas de page, donc si il est correctement placé, il ne gênera pas le chargement de la page.

    Par contre, les sites qui s’amusent avec jQuery ou autre et qui load le javascript en début de page parce qu’ils sont obligé, genre pour modifier le DOM, etc… ben là ça bloque le chargement tant que le javascript n’est pas chargé.

    Donc pour ces cas là, faire de l’asynchrone serait une bonne idée…

    Posté le 3 décembre 2009 à 14:28:49

  8. Flex Reply to this comment


    @lemulot : merci pour cette réponse, je viens de gagner 5 minutes de taff, de quoi faire une micro-sieste vite fait ! ^^

    Posté le 3 décembre 2009 à 14:35:10

  9. Korben Reply to this comment


    @Julien: Si c’est pas le code asynchrone, oui c’est avant < / body>
    Mais si c’est l’asynchrone, tu peux le mettre juste avant le < / head> car ça ne bloque plus le chargement

    Posté le 3 décembre 2009 à 14:47:44

  10. Decha Reply to this comment


    Merci pour l’info !

    Je viens de l’installer sur certains de mes sites. Le point le plus intéressant est l’exécution éventuel d’autres scripts après celui-ci (jQuery dans mon cas) qui, auparavant, devait attendre l’exécution de Google Analytics.

    La page s’affiche plus rapidement surtout sur ce vieux boussin d’IE6. C’est appréciable ;)

    Posté le 3 décembre 2009 à 15:08:09

  11. Mute Reply to this comment


    L’intérêt de remonter le code analytics en haut de page est de doper (un peu) sa fréquentation. Car sur des pages longues, un visiteur peut quitter la page avant d’avoir atteint je javascript et il ne sera pas comptabilisé par google analytics. Pour les gros sites qui vendent de la pub, je pense que ça peut avoir une certaine importance de faire ce genre de manip.

    Posté le 3 décembre 2009 à 15:10:12

  12. Gonomo Reply to this comment


    Et l’option « defer » ne marcherait elle pas aussi pour le code GA ?

    Posté le 3 décembre 2009 à 15:10:41

  13. Semageek Reply to this comment


    Merci de l’info, je l’avait déjà vu circuler,
    Mais c’est toi qui m’a décider à la mettre en place.
    On va voir à la longue si c’est efficace…

    Posté le 3 décembre 2009 à 15:22:43

  14. cloud Reply to this comment


    Ah sympa. Merci pour l’info. En effet l’intérêt est pour les longues pages qui s’affichent qui peuvent être fermées avant le chargement complet.
    Je test çà ce soir :)

    Posté le 3 décembre 2009 à 15:39:21

  15. http://bit.ly/6hEV6v Reply to this comment


    ici c’est pr peter les stats de l’analytics d’une fille http://bit.ly/6hEV6v

    Posté le 3 décembre 2009 à 18:14:29

  16. elban44 Reply to this comment


    Merci pour la trouvaille Korben !

    Tu as raison l’interface de YSlow est 100 fois plus agréable que celle de PageSpeed.

    T’inquiète pas pour ta note, ce qui compte c’est que le haut du site apparaisse rapidement pour ne pas faire attendre le lecteur…

    Posté le 3 décembre 2009 à 18:18:16

  17. Greg Reply to this comment


    Bah non korben (lol) Meme si c’est de l’asynchrone, il faut quand meme le mettre en bas ! Les quelques ms que le scripts met a s’exécuté, il vaut mieux que ce soit a la fin et pas au debut … En gros : TOUT les JS en bas de page …

    Posté le 3 décembre 2009 à 18:29:15

  18. 1ace Reply to this comment


    plus simple, pour ne pas avoir à modifier le code js (ou simplement quand on ne peut pas le modifier):

    la balise (x)HTML <script> accepte plusieurs paramètres, dont un qui est peu utilisé: defer

    <script type="text/javascript" defer="defer">
    // votre js
    </script>

    quand le moteur du browser voit cette balise, il repousse l’execution du script en fin de chargement de la page ;)

    Posté le 3 décembre 2009 à 19:05:07

  19. ZePRiNCE Reply to this comment


    Ouaip, mais quelques problemes avec Defer sous Firefox < 3.5

    Posté le 3 décembre 2009 à 19:15:56

  20. Mathieu Reply to this comment


    Ah ben ca tombe bien ce post, merci :) je suis justement en train de les intégrer sur nos sites et sous joomla les temps d’affichage sont pas top chez nous. Cela vaudrait la peine qu’on teste cette version du code analytics.

    Posté le 3 décembre 2009 à 20:26:44

  21. Dga Reply to this comment


    L’un des gros plus c’est que le faite de la placer en haut permet d’avoir des résultat plus précis.

    En bas de page il suffit que le site soit tellement lent à charger que pour le coup le code GA ne soit pas charger et donc aucune visite comptabilisé.

    Posté le 3 décembre 2009 à 20:42:11

  22. Yuxx Reply to this comment


    Merci, je viens de le placer sur mon blog !!

    Posté le 3 décembre 2009 à 22:58:08

  23. Wise Reply to this comment


    Quelqu’un ne connaitrait pas une astuce similaire pour Google Adsense par hasard, qui chez moi provoque un ralentissement du chargement de la page ? :)

    Posté le 5 décembre 2009 à 08:50:57

  24. Kapoue Reply to this comment


    Alors ? ca donne koi ?

    Posté le 7 décembre 2009 à 11:05:39

  25. Fanf Reply to this comment


    Oui, c’est vrai ça, ça donne quoi ?!

    Posté le 16 décembre 2009 à 10:12:10

  26. Greg Reply to this comment


    Même chose pour moi, j’aimerais bien que Google fasse de même pour les pubs adsense ! Quand je regarde ma waterfall, ce fichu javascript me bloque le chargement d’images…
    Déjà tenté le defer, ça ne marche pas, la pub s’affiche en pied de page.
    Chargement dynamique par javascript avec un ID marche pas non plus, restriction de fonction par google adsense.

    Posté le 5 janvier 2010 à 22:41:00