lundi 22 octobre 2012

Réduire le temps de chargement d'un site web

Aujourd'hui avec internet nous avons l'habitude d'obtenir l'information recherchée immédiatement.

A une époque où l'on ne veut pas attentdre voici plusieurs pistes à explorer pour réduire le temps de chargement d'un site web, le but de cet article n'étant pas de rentrer dans les détails de chaque technique, mais de proposer des débuts de solution à méditer.
  1. Réduire le nombre de requêtes HTTP
  2. Réduire la taille des données téléchargées
  3. Optimiser son code

 Réduire le nombre de requêtes HTTP

Supprimer les scripts et CSS chargés en doublon

Pour vérifier que vos JS et CSS sont bien chargés une seule fois, vous pouvez regarder les ressources chargées dans l'onglet "Réseau" de Firebug.

Utiliser la technique des CSS sprites pour les images

Il s'agit de regrouper un certain nombres de petites images les unes à côté des autres sur un même fichier. Par exemple vous utilisez plein de petites icones sur votre site et les chargez une par une : ce sont autant de requêtes HTTP que d'icones. En les regroupant sur un même fichier vous reduisez le chargement à une seule requête. Le découpage de chaque picto se fera ensuite en CSS.

Associer les scripts

Cette technique est à prendre avec des pincettes. Celà peut être bénéfique de regrouper plusieurs fichiers javascripts pour n'avoir plus qu'une seule requête HTTP ; cependant attention à la taille finale du script qui peut mettre énormément de temps à se charger également.

Charger les JS en fin de page

Celà peut permettre d'afficher plus rapidement la page, mais cette technique ne fonctionne que si les scripts concernés n'ont pas besoin d'être chargés plus tôt.

Utiliser le cache navigateur

Utiliser les en-têtes HTTP à bon escient peut éviter de redemander des ressources inutilement.

Utiliser un système de cache (par exemple Varnish)

Varnish vient se placer entre le client est le serveur. Si le client demande une ressource qui est déjà dans le cache, Varnish la renvoie sans faire appel au serveur. De nombreuses requêtes sont ainsi évitées. Vous pouvez bien entendu recharger certaines parties de code à la demande, grâce au langage ESI.

Réduire la taille des données téléchargées

(peut être en contradiction avec les préconisations précédentes, tout celà est à adapter en fonction des cas spécifiques)

Gzipper les fichiers

JS, CSS, HTML ou encore les fichiers XML/Texte seront compressés par le serveur avant envoi.

Réduire le poids des images quand celà est possible 

  • Réduire le nombre de couleurs dans photoshop, tout en “dosant” 

  • Utiliser un logiciel d’optimisation d’image, par exemple Caesium pour Windows

Minifier les fichiers JS et CSS

En supprimant les caractères non nécessaires ainsi que les commentaires et les espaces, la taille des fichiers est ainsi réduite et le temps de réponse est amélioré.

Optimiser son code

Encore une fois, vous trouverez dans cette partie quelques exemples de choses à faire pour optimiser votre code. Ces bonnes pratiques sont à avoir au moment du développement de votre projet, et sont de bonnes habitudes à prendre pour la suite.
  • PHP : utiliser des simples quotes à la place des doubles quotes
  • PHP : $array[‘key’] est 7 fois plus rapide que $array[key]
  • PHP : éviter les fonction dans les boucles : for($i=0;$i=count($array);$i++) la perte de temps est multipliée par le nombre d’itération
  • PHP : utiliser des chemins absolus évite le calcule du chemin d’un fichier
  • PHP : certaines fonctions sont plus rapides que d’autres : préférer str_replace à preg_replace, explode à preg_split, etc...
  • SQL : réduire le nombre de requêtes
  • SQL : bien structurer sa base de données : mettre les types adéquats, la bonne longueur de champ...
  • SQL : mettre en place des index pour accélérer la recherche de l'information en privilégiant les accès au fichier d'index

    et ainsi de suite...

Aucun commentaire:

Enregistrer un commentaire