Compression de fichier
Compresser des fichiers
Pourquoi compresser les fichiers est-il important ? C'est simple. D'une part cela réduit les besoins en bande passante, et secondement cela accélère les transferts. Depuis longtemps maintenant les navigateurs gèrent ce type de transferts et les serveurs également, que ce soit Apache ou IIS.
La compression permet de réduire la taille des fichiers (jusqu'à 90%), de manière complétement transparente pour les utilisateurs et les codeurs. C'est probablement une des actions à mener en premier. Simple à mettre en place, rapide et payant.
Les images, vidéos et autres formats déjà compressés ne sont pas concernés. Ce sont les formats texte qui bénéficieront donc d'un gain non négligeable : HTML, javascripts, CSS...
Méthodes de compression : mod_deflate et gzip
Pour la mise en place sur un serveur Apache, il y a 2 solutions.
La première méthode est l'usage du mod_deflate. La seconde est le mod_gzip. La première compresse, et la seconde... compresse. la différence est que deflate utilise moins le CPU que gzip. Ce même gzip réalisant des fichiers plus compressés, mais consommant plus de temps CPU.
Il s'agit donc de faire un choix entre bande passante et temps CPU. J'avoue pour ma part avoir une préférence pour le mod deflate dans la plupart des cas afin de privilégier le CPU. La troisième solution est l'usage de ob_gzhandler directement dans le code source PHP. Personnellement je ne l'utilise jamais. Cette méthode est consommatrice en ressource, et ne compresse pas les CSS, JS, etc à moins d'utiliser des ruses de sioux.
Pour utiliser l'une ou l'autre des deux premières solutions, il est possible d'utiliser soit le .htaccess, ou configurer le httpconf.
Configuration et optimisation via Htaccess
Avant de modifier quoi que ce soit, il faut vérifier que les extensions sont installées sur le serveur. Jetez un oeil à la configuration via un :
<?php phpinfo(), ?>
Vérifiez que vous disposez de la librairie mod_deflate. Dans la plupart des cas elle est activée. Puis ajoutez ceci à votre .htaccess :
{{<IfModule mod_deflate.c=""> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/xhtml+xml application/xml application/rss+xml application/atom_xml </IfModule>}}
Dans certains cas vous aurez peut être à toucher au fichier de configuration php.ini, afin d'activer la librairie, bien que depuis la version .