Documentation technique : Debian
Documentation basée sur la distribution Debian

> > > > mod_deflate : Compression Gzip du contenu

mod_deflate : Compression Gzip du contenu

Le module deflate d’Apache 2 permet de faire compresser au serveur les données avant de les envoyer au client. Il remplace l’ancien mod_gzip qui était utilisé pour Apache 1.

Il permet donc principalement d’alléger le poids des pages lors de leur transaction entre le serveur et le client afin de diminuer le temps de chargement des pages.

Tout d’abord on active les deux modules nécessaires :

  1. a2enmod deflate
  2. a2enmod headers

Télécharger

Puis on crée un fichier spécifique de configuration dans le répertoire /etc/apache2/conf-available/ [1] :

  1. nano /etc/apache2/conf-available/deflate.conf

Et on le remplit par ce contenu :

  1. <IfModule mod_deflate.c>
  2.         DeflateCompressionLevel 9
  3.        
  4.         # On force deflate sur certains mauvais headers
  5.         # developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
  6.         <IfModule mod_setenvif.c>
  7.                 <IfModule mod_headers.c>
  8.                         SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
  9.                         RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
  10.                 </IfModule>
  11.         </IfModule>
  12.  
  13.         #On supprime les Etags
  14.         <IfModule mod_headers.c>
  15.                 Header unset ETag
  16.         </IfModule>
  17.         FileETag None
  18.  
  19.         # On active ensuite la compression par type de fichiers
  20.         AddOutputFilterByType DEFLATE application/atom_xml
  21.         AddOutputFilterByType DEFLATE application/rss+xml
  22.         AddOutputFilterByType DEFLATE application/xml
  23.         AddOutputFilterByType DEFLATE application/x-httpd-php
  24.         AddOutputFilterByType DEFLATE application/x-httpd-fastphp
  25.         AddOutputFilterByType DEFLATE application/x-httpd-eruby
  26.         AddOutputFilterByType DEFLATE application/vnd.google-earth.kml+xml
  27.         AddOutputFilterByType DEFLATE application/javascript
  28.         AddOutputFilterByType DEFLATE application/x-javascript
  29.         AddOutputFilterByType DEFLATE application/xhtml+xml
  30.         AddOutputFilterByType DEFLATE image/svg+xml
  31.         AddOutputFilterByType DEFLATE text/css
  32.         AddOutputFilterByType DEFLATE text/html
  33.         AddOutputFilterByType DEFLATE text/plain
  34.         AddOutputFilterByType DEFLATE text/xml
  35.  
  36.         # On s'assure que certains types de fichiers ne sont pas pris en compte
  37.         SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar|gif|jpe?g|png|avi|mpg|swf|flv|mov|mp3|ogv|mp4|pdf|webm|ogg|rm)$ no-gzip dont-vary
  38.  
  39.         # gestion des navigateurs buggés
  40.         BrowserMatch ^Mozilla/4 gzip-only-text/html
  41.         BrowserMatch ^Mozilla/4\.0[678] no-gzip
  42.  
  43.         # Cette ligne est en général mise sur tous les tutoriaux mais empêche
  44.         # flowplayer de se charger sur Internet Explorer
  45.         #BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  46.  
  47.         # On s'assure que les proxies envoient le bon contenu
  48.         Header append Vary User-Agent env=!dont-vary
  49. </IfModule>

Télécharger

Il est également possible de conserver une trace du ratio de compression dans fichier en ajoutant ces lignes :

  1. # Loguer les actions du mod_deflate
  2. DeflateFilterNote Input input_info
  3. DeflateFilterNote Output output_info
  4. DeflateFilterNote Ratio ratio_info
  5. LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
  6. CustomLog /var/log/apache2/deflate_log deflate

Télécharger

Il est ensuite nécessaire d’activer le fichier de configuration et de redémarrer Apache de la sorte :

  1. sudo a2enconf deflate
  2. sudo service apache2 reload

Télécharger

NB : dans certains cas cette configuration empêche certains éléments flash (notamment flowplayer) de fonctionner correctement sur le navigateur Internet Explorer. Pour contourner cela, la solution est de commenter ou supprimer la ligne suivante [2] :

  1. BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

Pour une meilleure compréhension de ces directives, utilisez la documentation Apache de référence.

Notes

[1Dans les anciennes versions de la distribution Debian, ce fichier de configuration était créé dans /etc/apache2/conf.d/

[2Les effets indésirables de cela sur d’autres éléments n’ont pas été testés à 100%

  • Auteur :
  • Publié le :
  • Mis à jour : 17/05/18

1 commentaire


Qui êtes-vous ?
[Se connecter]
Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.