Accélérer un site grâce aux data URIs
Posté : 27 juin 2012, 10:33
Sur une page web classique, chaque élément (image, icône, fichier de police de caractère ...) nécessite une nouvelle connexion au serveur pour télécharger l'élément en question. Ceci ralentit naturellement l'affichage de la page.
Il existe actuellement 3 techniques pour réduire le nombre de requêtes:
La technique des data URIs peut également être utilisée dans les fichiers CSS. Vu leurs inconvénients, un bon compromis consiste justement à utiliser les data URIs pour encoder tous les petits fichiers, comme les icônes par exemple, utilisés dans une CSS.
J'ai créé un script (datauri.php) qui permet de faire la conversion automatiquement:
Le script va lire le fichier style.css et remplacer les éléments plus petits que 10KB par une data URI, économisant ainsi chaque fois une connexion au serveur. Le résultat est sauvé dans style.out.css. Le paramètre -r (root) est nécessaire pour que le script puisse trouver le fichier si le fichier CSS utilise des URLs absolues.
Vous pouvez télécharger le script sur mon blog: Réduire le nombre de requêtes grâce aux data URIs
Les questions et commentaires sont naturellement les bienvenus!
Il existe actuellement 3 techniques pour réduire le nombre de requêtes:
- Les sprites : consistent à grouper plusieurs petites images ou icônes en une seule;
- SPDY : ce protocole développé par Google permet de télécharger plusieurs éléments en parallèle, et en une seule connexion, mais il n'est actuellement supporté que par Chrome;
- Les data URIs.
<img src="mon_image.png">
On pourrait utiliser la data URI suivante:
<img src="data:image/png;base64,R0lGODlhEAAOALM...">
Cette technique possède cependant des inconvénients:
- Elle n'est pas supportée par Internet Explorer 7 et plus anciens (soit environ 8% des navigateurs actuellement utilisés);
- L'encodage Base64 est environ 40% plus gros que le fichier d'origine.
La technique des data URIs peut également être utilisée dans les fichiers CSS. Vu leurs inconvénients, un bon compromis consiste justement à utiliser les data URIs pour encoder tous les petits fichiers, comme les icônes par exemple, utilisés dans une CSS.
J'ai créé un script (datauri.php) qui permet de faire la conversion automatiquement:
Code : Tout sélectionner
datauri.php -i style.css -o style.out.css -r /var/www/mon_siteVous pouvez télécharger le script sur mon blog: Réduire le nombre de requêtes grâce aux data URIs
Les questions et commentaires sont naturellement les bienvenus!