Vous êtes ici Articles > Comment améliorer le temps de chargement de vos pages

 

Comment améliorer le temps de chargement de vos pages

Du coté PHP
 
Forty
Vu 5699 fois
Enregistré le 28 Fév 2010
  • Digg cet article sur digg.com
  • Bookmark cet article sur del.icio.us
  • Bookmark cet article sur Google
  • Bookmark cet article sur Yahoo
  • Ajoute Comment améliorer le temps de chargement de vos pages
  • Partage cet article sur Facebook
 
 
 
 

Comment améliorer le temps de chargement de vos pages


L’optimisation du temps d’affichage des pages passe par beaucoup de petits détails qui mis bout à bout réduisent fortement le temps d’affichage. Nous allons nous attacher dans ce tuto à réduire le temps de chargement et d’affichage d’une page en jouant sur tous les paramètres possibles comme l’accès à la base de données, le temps de calcul d’une page, le volume de données échangés entre le serveur et le navigateur et le temps d’affichage d’une page sur le navigateur.

Base de données

La base de données est l’un des éléments les plus couteux en temps de calcul d’une page. De plus la modification ou l’ajout de données sont les opérations les plus couteuses. Il faut donc le plus possible éviter les mises à jours ou préférer celles qui se font avec des tâches cron ou des traitements asynchrones.
Le temps de traitement d’un accès à des données en base dépend de nombreux paramètres mais il est indispensable d’éviter les lectures séquentielles (parcourt de tous les enregistrements d’une table). Elle se fait quand il n’y a pas d’index déclaré pour les premiers champs composant la clause WHERE. Cette lecture séquentielle est d’autant plus pénalisante que la table contient de très nombreux enregistrements. Il est donc important de trouver un équilibre avec l’index car pas assez d’index pénalise le temps de lecture alors que trop d’index pénalise le volume de la base de données et le temps d’écriture dans la base.

Pour réduire le temps d’accès, il faut aussi limiter les données lues au strict minimum car accéder à des données qui ne sont pas traitées par la suite pénalise la bande passante entre le serveur php et le serveur de base de données pour rien.

Eviter les SELECT * quand tous les champs de la table ne sont pas utilisés et préférer un SELECT champ1, champ2, …
De plus, il est toujours plus rapide de stocker dans une variable PHP (comme dans un tableau) une donnée lue plusieurs fois plutôt que de faire plusieurs SELECT pour la lire. Donner vous la peine de développer un module qui contrôle le chargement des données et qui évite l’accès à la base de données quand l’enregistrement a déjà été lu.

Il est aussi avantageux de pré-charger en début de traitement des données dont on va avoir besoin par la suite car il est plus rapide de lire 10 enregistrements en une fois plutôt que 10 fois un seul enregistrement.

Calcul page HTML

L’une des solutions pour diminuer le temps de calcul d’une page html consiste a stocker son contenu sur le serveur avec un système de cache. Il existe de nombreux scripts PHP qui le permettent comme ceux présents sur PHP Sources http://www.phpsources.org/scripts395-PHP.htm. La mise en place d’un système de cache peut même permettre une plus grande disponibilité de service car il permet de limiter les accès concomitant à la base de données et permettent donc d’éviter les erreurs qui en résultent.
L’autre avantage que nous pouvons tirer de la gestion de cache est de pouvoir toujours afficher un contenu (même légèrement obsolète) lors d’une erreur SQL ou autre en envoyant dans ce cas le contenu du cache précédent.

La solution la plus performante est le calcul des pages par des traitements en arrière plans. Dans ce cas, la mise à jour d’une donnée déclenche un traitement qui met à jour un ou plusieurs pages du site. Cette solution doit idéalement être envisagée à la construction du site mais reste incontestablement la plus performante puisque le visiteur ne fait que récupérer une page déjà générée.

Charge réseau

La charge réseau ou plutôt le volume de données échangées entre le serveur et le navigateur est aujourd’hui un facteur important à traiter vu la surcharge des réseaux actuels. Pour se faire nous allons utiliser la compression de données. Mais avant ca regardons d’abord les éléments que nous pouvons compresser sur un site.

Une page internet est composée de nombreux éléments, en premier nous avons la page HTML, puis les fichiers CSS et les fichiers Javascripts, ensuite viennent les images, les vidéos …
Les différentes optimisations que nous allons voir touchent au volume de données échangées mais également à la diminution du nombre d’accès à une donnée.
Pour diminuer le volume d’un fichier texte (HTML, CSS, Javascript, …), il est possible d’utiliser une compression GZIP. Il existe des solutions simples utilisant la puissance d’Apache.
Il est par ailleurs intéressant de supprimer les données inutiles comme les commentaires HTML ou les caractères d’indentation. Pour les données structurées qui ne sont pas mises à jour souvent, il existe des outils qui condensent du code en supprimant tout ce qui n’est pas indispensable au bon fonctionnement et qui ne dégrade pas la qualité.

Voici une liste de quelques unes de ces compressions.
.compression HTML
.compression CSS
.compression JS
.compression images

Ajoutons a la compression qu’il est également possible de définir une date d’expiration lointaine des pages. C’est d’autant plus utile que les données ne varient pas autant que les fichiers css, js ou les images. La technique la plus simple est de gérer les versions des fichiers en copiant un numéro ou une date qui s’incrémente directement dans le nom de fichier. Cette technique permet même de visualiser d’anciennes versions d’une page mémorisée dans un système comme archive ou le cache d’un moteur de recherche code htaccess


Pour conclure, n’oubliez pas de bloquer les IP indésirables, de gérer les erreurs de la famille 400 et le spam interne pour rendre votre site plus disponible aux vrais utilisateurs.

Liens
Compression images : http://www.smushit.com/ysmush.it/
Compression JS : http://closure-compiler.appspot.com/home
Compression JS et CSS avec PHP : http://code.google.com/p/minify/
Compression CSS avec PHP : http://csstidy.sourceforge.net/
Extensions pour Firefox : http://code.google.com/intl/fr-FR/speed/page-speed/


Commentaire
merci pour l'article
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Quelques articles qui devraient vous intéresser