Mesurer la performance avec Jiffy

Jiffy est un projet mené par Netflix et présenté aux conférences Velocity 2008 (en ligne, pdf, vidéo) par Bill Scoot (tiens, encore un ancien Yahoo!). Personne n’a l’air d’en avoir parlé depuis mais le projet est suffisamment intéressant pour mériter de s’y arrêter.

Le besoin est commun à celui de la plupart des sites important : avoir des statistiques et des mesures réelles venant des utilisateurs. Pour les performances la question est loin d’être évidentes et la plupart des outils dégradent les performances qu’ils sont en train de mesurer.

Mesurer

Dans sa présentation Bill Scott nous propose un tout petit script js, moins de 10ko. Il offre deux fonctionnalités de base : mark() et measure(). La première fonction prend un repère dans le temps, et la seconde mesure le temps passé depuis un repère donné. On peut donc avoir plusieurs mesures par repère, et tout est stocké dans le DOM pour réutilisation plus tard.

Bien entendu on voudra faire une marque à l’exécution du script, tout en haut du <head>. On voudra faire une mesure à la fin du <body>, sur le DOMContentLoaded et sur le onLoad. Probablement, puisque la publicité est souvent le plus gros problème de performance, on voudra faire une marque avant d’insérer la publicité et faire une mesure juste après. Faire une mesure après le contenu principal pourrait aussi être intéressant, de façon à mesurer la partie « importante pour l’utilisateur » quitte à ce que je reste mette plus longtemps à charger.

La seule chose qu’on ne mesure pas c’est le premier aller-retour serveur pour aller chercher la page HTML, et le second pour aller chercher le script Jiffy. Maintenant il ne s’agit pas d’avoir des mesures absolues, qui ne veulent rien dire en soi. Il y aura un décalage par rapport à Yslow mais on pourra avoir d’autres mesures, plus précises, et surtout on pourra mesurer les variations suivant les modifications de la page. C’est finalement ça l’important : pouvoir améliorer les choses, peu importe où on se situe.

Collecter

La seconde partie de Jiffy c’est l’envoi des résultats. Le but de Netflix est en effet la collecte statistiques. Il s’agit donc d’envoyer toutes les mesures faites avec tout ce qu’on peut collecter d’intéressant (version du navigateur, adresse ip, système, identifiant des publicités affichées, page visitée, etc.).

On nous propose d’envoyer les résultats à chaque mesure ou d’envoyer une requête groupée en fin de page. Le tout étant reçu par le serveur web pour alimenter une grosse base de données. Envoyer un résultat à chaque mesure risque de dégrader les performances, d’un autre côté envoyer les résultats en fin de page implique un biais si certains de vos utilisateurs quittent la page avant. Il doit aussi y avoir moyen de stocker ça en cookie pour le recevoir à la requête suivante mais cela implique d’autres biais.

Avec toutes les mesures, des filtres par navigateur, date, url, publicité … on pourra enfin détecter la source des problèmes. Lors des évolutions du site, on aura des mesures réelles sur la réaction des différents navigateurs. Mais on pourra être alerté si la courbe de performance pour une URL, un navigateur, une source géographique ou une publicité se dégrade ou s’améliore. Une publicité ou un partenaire ne respecte pas son SLA à cause des javascript qui appellent des javascript qui appellent des javascript ? on le verra.

Afficher

Avec tout ça, nous avons même droit à une extension firefox qui se branche sur firebug et qui permet de visualiser les statistiques de la page courante.

jiffy-duration

Publié par edaspet

Plus d'informations sur mon profil en ligne

3 réponses sur « Mesurer la performance avec Jiffy »

  1. L’envoi des données peut etre fait sur un unload. ca devrai du coup permetre d’avoir les information meme si la personne quite la page avant la fin de sont chargement.

Les commentaires sont fermés.