Optimiser le temps de chargement des pages d'un site


Par Worm Imprimer le tutorial Voir son profil

1) Introduction


Bonjour chat.gif

Il existe plusieurs bonnes raisons d'optimiser le temps de chargement des pages de votre site.

Si votre site se charge trop lentement, la majorité des visiteurs ferment celui-ci sans avoir consulté son contenu... La fluidité de la navigation est tout aussi importante.

De plus, si votre site est hébergé sur un hébergeur limitant la bande passante utilisée, il est bon d'optimiser le poids de vos pages et de vos images.

Cependant, la compression augmente la charge du processeur, donc cela peut augmenter l'affichage de vos pages si la machine sur laquelle est hébergée votre site n'est pas très puissante.

1.1) La bande passante



Dans le domaine de l'informatique, la bande passante indique - par abus de langage - un débit d'informations. Le terme exact est le débit binaire.

L'origine du terme est une analogie avec la bande passante en électronique. La bande passante d'un cable mesurant le nombre maximal d'oscillations par seconde qu'un signal peut y prendre sans être trop atténué, si le signal est celui d'une liaison informatique comme une liaison série, le nombre d'oscillations va refléter le nombre d'informations que l'on peut transférer durant une seconde.

La bande passante peut concerner le débit d'un périphérique (tel qu'une mémoire, un disque dur, etc.) ou d'un medium de communication (réseau, bus, etc.) ou de manière générale n'importe quel débit d'information comme entre le processeur et la mémoire cache.

On mesure généralement cette bande passante en octets (byte en anglais) par seconde (o/s, ou en Anglais « Byte per second », B/s) ou en bits par secondes (bit/s ou bps), plus généralement utilisée par les fournisseurs d'accès internet pour donner le débit maximum d'un abonnement.


Citation de http://fr.wikipedia.org/wiki/Bande_passante

2) Coder proprement


C'est la première chose à faire !
Si votre site est entièrement codé à l'aide de <table>, qui je vous rappele ne doivent en aucun cas servir à la mise en page, mais à la structuration de données tabulaires (comme une commande de produits, ou un relevé bancaire par exemple), il mettra plus de temps à se charger qu'un site utilisant CSS et XHTML.

Du fait que chaque requete consomme de la bande passante, essayez de limiter celles-ci en essayant de réduire le nombre d'éléments extérieurs à télécharger tels que les fichiers javascript, les images, etc...

Une petite astuce, pensez à mettre vos images d'arrière-plan grâce à la propriété CSS background-image plutôt qu'avec <img>. L'affichage du texte en sera plus rapide et les visiteurs pourront d'ores et déjà commencer à lire le contenu, pendant que les images se chargent.

Pensez qu'un seul fichier se charge plus rapidement que deux de la moitié de sa taille clindoeil.gif

3) Compression


3.1) Avec PHP


Si votre site utilise PHP, il existe une méthode de compression, permettant de compresser (GZIP) la page avant de l'envoyer au navigateur. Attention, ceci ne marche qu'avec les version de PHP supérieures ou égales à 4.0.2.

Il faut se servir de la fonction ob_start avec comme argument ob_gzhandler, avant toute sortie html, les entêtes étant envoyés avant le html. Quelques vérifications et le tour est joué original.gif

Puisqu'un exemple vaut mieux qu'un long discours :

<?php
// Si les entêtes ne sont pas envoyés, et que la compression n'a pas commencée
if (!headers_sent() && ob_get_length() == 0)
{
// On vérifie la version de PHP
if (ini_get('output_handler') == 'ob_gzhandler' || version_compare(PHP_VERSION, '4.2.0') == -1)
$compression = false;
// On compresse !
else
ob_start('ob_gzhandler');
}

// Si on a pas réussi à compresser, il faut quand même envoyer les headers
if ($compression == false)
ob_start();
?>
html...


Cette compression permet de faire d'importants gains au niveau de la vitesse de chargement de vos pages original.gif

Attention Il peut survenir une erreur lorsque vous placez la compression après session_start()

3.2) Compresser le Javascript


Il est possible de compresser vos scripts javascript :
- soit à la main à l'aide de Notepad++, en supprimant toutes les indentations, les lignes et en enlevant le retour à la ligne

- soit à l'aide d'un outil comme Shrinksafe qui fait la même chose, mais renomme aussi les variables pour diminuer encore plus la taille du script.

4) Optimiser les images


Dans le cas d'images d'arrières-plans, il est préférable d'utiliser le format JPG qui est réputé pour être le plus optimisé pour le web. Si vous souhaitez utiliser des petites images, ou des images gérant la transparence, tournez vous vers le PNG qui est à préférer au GIF, celui-ci étant soumit à une license.

Si vous travailler avec vos Photoshop ou avec Gimp et que vous enregistrez vos images en qualité maximale, il arrive souvent qu'elles dépassent les 100ko ohmy.gif

Les pages deviennent assez longue à charger en particulier pour les utilisateurs du 56K rolleyes.gif et ces images utilisent une grande partie de la bande passante.

Donc essayez d'optimiser ces images, en sélectionnant enregistrer pour le web sur photoshop par exemple, et essayer de régler la qualité de ces images d'une façon plus appropriée.

5) Conclusion


Pensez que plus vos pages se chargeront vite, plus les visiteurs apprécieront de visiter votre site, et vous réaliserez certainement quelques économies de bande passante au niveau de votre hébergeur clindoeil.gif
« Trouve un travail qui te plaît et plus jamais tu ne travailleras » Confucius


5 commentaire(s)

maxrider Date inconnue
Premièrement: Tu ne fais aucune comparaison avec une page affichée classiquement au format PHP et une page compressée avec GZIP donc c'est bancale à mon gout !

Deuxièmement: la gestion des buffers via php est contraignante ! Perso j'essaye au maximum de m'en passer. Et puis compresser quelques Ko de données ça rime presque au ridicule.

Si une page est mal écrite, elle aura du mal à se charger c'est sur. Pour les images tu ne donnes pas de format, il est bien d'utiliser du gif, du jpeg et du png. Le bmp est totalement à banir !!!
Worm Date inconnue
Je ne vois pas de différence dans l'affichage d'une page compressée avec GZIP et une autre au format HTML. Lorsque j'ai utilisé la compression sur Tuto-Geek, je n'ai pas vu de différence, si ce n'est la diminution du poids de la page.

Je vois pas en quoi la gestion des buffers est contraignante dry.gif il suffit de bien faire attention de pas placer la bufferisation de sortie après une sortie html, rien de plus. Des erreurs peuvent apparaitre si elle est utilisée après session_start().

Gagner ne serait-ce que 10Ko est au contraire bien utile ! Petit calcul :
- Un site de 100Ko génère 100 visites/jour : 300Mo de bande passante/mois
- La même chose, mais avec un site de 90Ko : 270Mo de bp/mois
Il ne faut pas oublier que la compression gzip peut réduire le poids de la page de 70%.

Merci, je n'avais pas pensé à préciser quel format d'image il était préférable d'utiliser original.gif
adorus Date inconnue
L'avantage de la compression GZIP est d'épargner de la bande passante, ok..
Par contre, cela augmente l'utilisation du processeur.. ce qui en cas de fort trafic, diminue la rapidité du site.
Dans mon cas, je peux donc vous dire que - à certains moments en tous cas - la compression ralentit la rapidité de l'affichage... Elle est d'ailleurs très difficile sur un site à gros volume (où alors il faut une super bonne machine, ce qui est plus cher que la bande passante..)
Worm Date inconnue
Oui, c'est sûr qu'il faut bien analyser la situation avant d'utiliser la compression. Je vais rajouter cette petite précision, merci.
Worm Il y a 2 ans
Nouvelle adresse pour ShrinkSafe :
http://shrinksafe.dojotoolkit.org/

Ajouter un commentaire

Vous devez vous être connecté pour poster des commentaires