Automatisation de Yslow

La prise de conscience sur le sujet des performances web évolue. Beaucoup d’équipes ont désormais appliqué quelques recettes de base, ou ont au moins un item dédié dans la liste des choses à faire.

Il reste toutefois à passer une phase d’industrialisation. Lancer Yslow tous les mois à la main n’est pas toujours idéal. Cela implique de reporter des résultats manuellement et du coup de ne le faire que pour un nombre limité de pages. On se retrouve aussi à devoir trier les métriques pour y associer une priorité et ne pas se retrouver à devoir tout faire immédiatement.

Une approche pragmatique voudrait qu’on puisse automatiser Yslow et s’occuper régulièrement des points et des pages les plus prioritaires. C’est ce que vous propose Yslow :

Importer et centraliser les résultats

Tout ce que vous avez à faire c’est modifier deux valeurs de configuration dans votre about:config : extensions.firebug.yslow.beaconUrl et extensions.firebug.yslow.optinBeacon. La première est l’adresse d’un script, et le second est un booléen pour activer la fonctionnalité. Tout ce qui sera mesuré sera alors simplement envoyé à votre script. La suite c’est éventuellement de régler extensions.yslow.autorun pour que yslow soit lancé automatiquement sur toutes les pages qu’il rencontre.

Automatiser la procédure

Il reste que même si les résultats sont collectés automatiquement et centralisés par la suite, on demande encore à un utilisateur de parcourir le site. La prochaine étape c’est de faire tourner un Firefox automatiquement. Firefox accepte quelques paramètres en ligne de commande, le reste peut être fait via greasmonkey ou mozrepl. Il devient tout à fait acceptable de lancer un site à distance, réaliser quelques actions, et obtenir le résultat yslow dans la base de données.

Fonctionner sans fenêtre

On commence à s’approcher de ce que pourrait faire un serveur de test ou de mesure. Pour aller encore plus loin il faudrait se passer des fenêtres Firefox et faire tourner le logiciel hors de tout contexte graphique. Si vous êtes avec un système linux, rien de plus simple avec un petit coup de xvfb.

Au final

Résultats collectés en base, yslow automatique, pilotage à distance, automatisation, fonctionnement sans fenêtre, au final ça a déjà été fait par d’autres, mais ça reste encore artisanal. Pour ceux qui veulent tester, jetez un oeil à Cesium. Il s’agit d’un projet pour faire justement ça, avec un back-office en python. (retours bienvenus, je n’ai pas testé Cesium moi même)

Publié par edaspet

Plus d'informations sur mon profil en ligne

4 réponses sur « Automatisation de Yslow »

  1. Salut,

    Selenium : http://seleniumhq.org/ permet également d’automatiser des actions navigateurs côté front ou côté serveur, c’est facile d’utilisation, Greasemonkey peut faire l’affaire sinon je pense (je ne connais pas mozrepl par contre).

    Sinon effectivement pour l’article en lui même c’est une approche tout à fait intéressante que je vais essayer de mettre en place à la rentrée.

    Merci pour l’info.

  2. Bonjour,

    En effet, c’est une approche intéressante de l’automatisation de YSlow que de pouvoir naviguer automatiquement : on pourrait imaginer avoir des alarmes automatiques ou des graphiques présentant les points noirs de son site.

    Je rajouterais quand même à la partie « Importer et centraliser les résultats » que la valeur de extensions.yslow.beaconInfo permet d’affiner les résultats envoyés par YSlow. Par défaut, ce ne sont pas tous les résultats et il faudra donc changer pour mettre « all ».
    Ca aura également pour conséquence d’envoyer les résultats au format JSON en données « raw post ».

    A creuser en tout cas !

  3. Dans le même ordre d’idée:
    http://billwscott.com/share/presentations/2008/stanford/HPWP-RealWorld.pdf

    Bill Scott (Netflix) a donne une présentation a Velocity 2008 sur le sujet et comment Netflix mesure en temps réel la performance du front end netflix.com. Un mix entre mesure sur coté serveur (jsp) et coté client (js) qui est ensuite envoyé via ajax a un serveur central (comme le beacon url dans ton article).

    J’ai implémenté une idée similaire sur une app PHP/JS avec une version « debug » qui contient le code spécifique pour mesurer aux endroits intéressants. Ensuite nous avons un script selenium automatise avec phpunit qui parcours l’application via un chemin pre défini. Ce script tourne régulièrement et utilise selenium rc avec des machines virtuelles pour de multiples navigateur (tip: si vous ne voulez pas passer de temps a mettre en place tout ce bazar, jeter un œil a http://saucelabs.com). Le dernier maillon est le serveur qui collecte les infos dans une base mysql avec un script php tout bête qui crée des graphs suivants une requête utilisateur (filtre sur une période de temps, version de l’application, page de l’application…). Cet outil est vraiment très utile pour mesurer les améliorations d’une version a l’autre et pour être sur que nous ne dégradons pas les performance. Cela nous a permis également de trouver certains points faibles a corriger.

    Avantage sur yslow: support de navigateurs multiple, pas seulement Firefox.

Les commentaires sont fermés.