Depuis quelques temps, et en grande partie grâce à Éric, je tente de m’initier aux bonnes pratiques de performance Web.
Armé de l’extension YSlow, j’essaye de mettre en place une configuration la plus performante possible.
Bonne nouvelle
Certaines des recommandations sont évidentes et du coup il est rassurant de voir qu’on suit déjà ses principes :
- externaliser les fichiers CSS et JS ;
- éviter les redirections ;
- ne pas dupliquer les scripts ;
- réduire la taille de l’arbre HTML ;
- utiliser le moins possible d’iframes ;
- éviter les pages 404 ;
- préférer
<link>
à@import
; - optimisez au mieux les images et
- ne pas les redimensionner côté client.
Les premières étapes
Beaucoup de règles se comprennent aisément, et il suffit d’adapter son code pour s’y conformer.
Je me suis ainsi retrouvé à :
- déplacer mes appels JS en bas de page ;
- utiliser bien plus souvent la technique des sprites CSS ;
- concaténer mes fichiers CSS et mes fichiers JS ;
- limiter au maximum l’utilisation des filtres ;
- minimiser la taille des mes fichiers CSS et JS ;
- faire attention à mes appels au DOM et
- réduire la taille de mes favicons.
La suite
Arrive maintenant les points qui me semblent plus obscurs (que je découvre à peine). À savoir :
- gérer le cache au mieux ;
- compresser les fichiers ;
- configurer les ETags ;
- vider le buffer ;
- etc.
Et pour les professionnels de l’optimisation et de l’hébergement
Reste ensuite quelques points plus spécifiques qui, de mon avis, sont réservés aux professionnels ou tout du moins, bien peu évidents à mettre en place :
- l’utilisation d’un CDN ou encore
- la répartition des contenus sur plusieurs domaines.
Mes interrogations du moment
Elles sont multiples.
J’aimerais comprendre pourquoi malgré mes efforts certains de mes contenus ne sont pas Gzippés, comprendre un peu mieux les principes de ETags, fouiller un peu du côté de cette fonction flush()
, automatiser les compressions et les concaténations, etc.
Et justement sur ce dernier point, j’expérimente en ce moment deux techniques. Celle de Niels Leenheer pour concaténer les fichiers et celle de Douglas Crockford pour minimiser le code JS.
Avez-vous des conseils à me donner sur ces sujets ? Est-ce des domaines que vous découvrez également ?