Memo – Compression

/assets/images/articles/memo_compression.jpg

Publié le 05/05/2015, dans informatique, web, apache, compression, linux

Quand on a un site web, se pose parfois le problème de la taille des fichiers transmis : par exemple récemment mon ami Thibault Hottou (Dont vous pouvez voir les chouettes créations ici : http://cowardsprojects.comoj.com) a créé un nouveau site. Ce dernier avait besoin de charger les bibliothèques Jquery et d'autres fichiers assez lourds, sa page pesait environ 1Mio.

Le but fut donc de réduire le poids de la page transmise : pour cela une solution bien pratique est la compression.

I – Principe

Le but est de dire au serveur web (ici Apache) de compresser certains fichiers avant de les envoyer, puis une fois reçus les fichiers sont décompressés à la volée par le navigateur qui les affiches.

II – Mise en œuvre

1 – Activer les modules qui vont bien

On active le module headers qui permet de modifier les en-têtes HTTP (notamment en indiquant au navigateur que la page est compressée) ainsi que le module deflate qui gère la compression.

$ a2enmod headers & a2enmod deflate

2 – On modifie le fichier apache2.conf

On y ajoute les lignes concernant la compression (j'ai ajouté des commentaires pour expliquer un peu le rôle de chaque partie). La compression peut être comprise entre 0 (pas de compression) et 9 (le maximum).

SetOutputFilter DEFLATE
DeflateCompressionLevel 9 #le niveau de compression

#on spécifie le dossier dont on veut compresser les fichiers (chemin relatif au dossier web d'apache)
AddOutputFilterByType DEFLATE text/plain #type de fichier à comrpesser
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript

3 – On enregistre et on recharge la configuration d'Apache

$ service apache2 reload

Et c'est tout, on peut voir la différence avec et sans le module deflate en regardant le poids de la page avant et après compression.

Ici pour mon site thinkers.ddns.net :

Avec compression :

with_deflate

Sans compression :

without_deflate

Credit image : Walz of Winnipeg


Vous pouvez commenter en envoyant un mail via ce bouton (votre adresse ne sera pas publié).

Commenter par mail