Introduction
De nos jours, de nombreux développeurs web utilisent Pagespeed pour optimiser leurs applications. Cet outil est facile à utiliser, très clair, et donne de nombreux conseils sur comment améliorer la rapidité de ses pages. Et une fois que les développeurs ont fini de résoudre certains problèmes ainsi détectés, ils affichent fièrement leur score tel un trophée prestigieux.
Regarde moi maman ! J’ai un score de 92 sur Pagespeed !
Ok mon garçon. C’est vraiment très bien. Ton site est certainement plus rapide que jamais, aucun doute. Mais peut-être que parfois, tu te demandes s’il y a autre chose au-delà de Pagespeed. Et bien la réponse est oui ! De nombreuses optimisations sont possibles, des techniques oubliées de certains, mais pas de tous, et qui étaient utilisées avant le règne de l’outil de Google.
Note: Cet article n’est pas un réquisitoire contre Pagespeed. J’adore cet outil. J’explore simplement quelques possibilités pour aller plus loin
Auditer votre code
Chrome developer tools inclut de nombreux onglets, mais certains d’entre eux sont délaissés par les développeurs. Des fonctionnalités comme la Timeline, le profiling, ou encore les audits, semblent effrayantes. Quoi, vous voulez vraiment que j’audite mon code ? Et que je fasse du profiling dessus ? Non merci.
En réalité, vous devriez, ces outils sont vraiment puissants. L’onglet Timeline par exemple, vous permet de visualiser quelle partie de votre application consomment de la mémoire et du temps. Ainsi, vous pouvez savoir précisément quels scripts et quelles ressources ralentissent votre chargement. Monitorer la mémoire est quelque chose de très important, surtout sur mobile où elle est limitée. Vous croyez vraiment que le navigateur a accès à 2Go de mémoire sur un Nexus 4 ?
L’onglet “Profile” lui, permet de monitorer l’usage de la mémoire et la consommation CPU dans votre application, et tout spécialement par les scripts. Ainsi, vous pouvez voir quelles fonctions sont gourmandes en ressources. Cela vous permet aussi de vérifier que vous n’avez pas de comportement anormal dans votre code. Cependant, si vous utilisez un framework, vous verrez que la plupart des fonctions consommatrices sont faites par lui. Concernant le profiling CSS, j’en parlerai dans la prochaine section.

L’onglet audit est relativement similaire à ce que Pagespeed fait maintenant: donner des conseils par ordre d’importance sur comment améliorer votre code (et particulièrement côté serveur comme Pagespeed). Cependant, une partie est consacrée au CSS. Elle vous permet de voir le pourcentage de code CSS non utilisé sur votre page, et quels sont les sélecteurs concernés. Très pratique si vous utilisez des librairies CSS comme Bootstrap.

A présent, vous devriez être convaincu que ces outils sont très utiles !

Vous voulez aller plus loin ? Voilà une vidéo de Google sur ses developer tools :
http://www.youtube.com/watch?v=BaneWEqNcpE
Optimiser votre CSS
Si vous avez profiler votre CSS, vous avez sûrement remarqué que certaines parties de votre CSS ne sont pas otpmisées. C’est généralement dû au fait que vous utilisez des règles CSS trop génériques, et donc le navigateur essaye de les appliquer à des endroits où ces règles ne sont pas utilisées.
Par exemple, avec le code suivant :
HTML
My perfect title
CSS
h3{font-size: 3em;}
Même si vous n’avez qu’un seul h3 dans votre CSS, le navigateur va essayer de trouver d’autres h3 pour leur appliquer cette règle. Mais vous, développeur, vous pouvez l’aider ! Dites-lui simplement que cette règle ne s’applique qu’à ce h3 en particulier (si c’est le cas bien entendu).
#myAwesomeDiv #mySuperDiv h3{font-size: 3em;}
De l’importance du chat ou la légende des cookies
Si vous êtes un fan de Pagespeed, votre CSS et votre Javascript sont probablement déjà minifiés. Très utile, mais il y a mieux si vous utilisez plusieurs CSS ou JS dans votre page. Par exemple, si vous avez 3 feuilles de style, cela requiert 3 requêtes HTTP, probablement sur le même domaine que vos scripts et vos images. Malheureusement, les navigateur n’autorisent qu’un nombre limité de requêtes simultanées. Ce nombre est généralement de 6, mais peut descendre jusqu’à 2 sur certains vieux navigateurs. Vous pouvez voir ce nombre sur Browserscope.
Donc, avec 3 CSS, 4 scripts et 12 images, cela peut prendre beaucoup de temps. Bien entendu, avec une connexion rapide, ce n’est pas gênant me dites-vous. Mais nous vivons dans un monde mobile. Les requêtes HTTP consomment de la batterie et des ressources. Rappelez-vous lorsque la batterie de votre smartphone est presque vide alors que vous l’avez rechargé le matin même. Moins de requêtes HTTP signifie plus de batterie, et des chargements plus rapides. Pensez-y.
En fait, c’est un peu le problème du gros cookie et des petits cookies. Vaut-il mieux charger peu de grosses données, ou plein de petites ? Et bien la réponse est : le gros cookie est généralement plus optimisé. Reto Meier en parle très bien dans une de ses conférences sur Android lors de cette session Google IO
Vous êtes convaincu à présent ? Et bien la solution est très simple: regrouper vos ressources dans un seul fichier. Un CSS, un fichier JS. Et si possible, faites de même pour vos images avec des sprites.
Vous pouvez utiliser des outils comme CleanCSS ou uglifyJS avec la ligne de commande cat (disponible dans le Git Bash si vous êtes sur Windows) pour regrouper ET minifier vos fichiers en même temps.
Ecrivez du code de meilleure qualité
Même avec les meilleurs optimisations côté serveur de la Galaxie, si votre code est mauvais, tout ce travail fait ne sert à rien. Si vous utilisez un mobile sur du Wi-Fi par exemple, récupérer les ressources depuis le serveur pourra être rapide, mais le rendu de la page est une étape critique et peut être très longue. Peut-être trop longue. Et voilà que votre utilisateur est déjà sur un site concurrent.
Vous ne voulez pas que cela arrive bien sûr. Alors allez voir quelques guidelines de différentes entreprises. Vous y trouverez de précieux conseils.
CSS de Github: https://github.com/styleguide/css
JS de Github: https://github.com/styleguide/javascript
CSS de Blackberry: http://developer.blackberry.com/html5/documentation/css_best_practices.html
JS de Blackberry: http://developer.blackberry.com/html5/documentation/javascript_best_practices.html
CSS de Google: http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml
JS de Google: http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml
Conclusion
Cet article n’est pas un guide complet sur l’optimisation de pages web, mais donne malgré tout quelques pistes en complément de Pagespeed, plus axé sur le côté client. N’hésitez pas à regarder les guidelines ci-dessus, et à chercher d’autres conseils sur Google, il y a de nombreuses astuces non présentées ici, et qui peuvent accélerer plus encore votre site !









