<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_deflate

Langues Disponibles:  en  |  fr  |  ja  |  ko 

Description:Comprime le contenu avant de le servir au client
Statut:Extension
Identificateur�de�Module:deflate_module
Fichier�Source:mod_deflate.c

Sommaire

Le module mod_deflate impl�mente le filtre de sortie DEFLATE qui permet de comprimer la sortie de votre serveur avant de l'envoyer au client sur le r�seau.

Directives

Sujets

Voir aussi

top

Exemples de configurations

Voici un exemple simple de configuration pour les impatients.

Ne comprime que certains types de documents

      AddOutputFilterByType DEFLATE text/html text/plain text/xml
      

La configuration suivante, tout en produisant un contenu encore plus comprim�, est aussi beaucoup plus compliqu�e. N'utilisez pas cet exemple si vous ne comprenez pas tous les d�tails de la configuration.

Comprime tout, sauf les images

<Location />
    # Insert filter
    SetOutputFilter DEFLATE
    
    # Netscape 4.x a quelques probl�mes ...
    BrowserMatch ^Mozilla/4         gzip-only-text/html
    
    # Netscape 4.06-4.08 ont d'autres probl�mes
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    
    # MSIE se fait passer pour Netscape, mais �a marche
    BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html
    # Ne pas comprimer les images
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    
    # On s'assure que les mandataires ne servent pas le mauvais
    # contenu
    Header append Vary User-Agent env=!dont-vary
</Location>
      
top

Activation de la compression

Compression de la sortie

La compression est impl�ment�e par le filtre DEFLATE. La directive suivante active la compression des documents dans le conteneur o� elle est plac�e :

        SetOutputFilter DEFLATE
      

Certains navigateurs populaires ne g�rent pas la compression de tous les contenus, et pour r�soudre ce probl�me, vous pouvez d�finir la note gzip-only-text/html � 1 pour ne permettre que la compression des fichiers html (voir ci-dessous). Si vous d�finissez cette note � toute autre valeur que 1, elle sera ignor�e.

Si vous voulez limiter la compression � certains types MIME particuliers, vous pouvez utiliser la directive AddOutputFilterByType. Voici un exemple o� la compression n'est activ�e que pour les fichiers html de la documentation d'Apache :

<Directory "/your-server-root/manual">
    AddOutputFilterByType DEFLATE text/html
</Directory>
      

Pour les navigateurs qui ont des probl�mes avec la compression de tous les types de fichiers, vous pouvez utiliser la directive BrowserMatch pour d�finir la note no-gzip, pour le navigateur consid�r�, de fa�on � ce qu'aucune compression ne soit effectu�e. Vous pouvez combiner no-gzip avec gzip-only-text/html afin d'obtenir le meilleur r�sultat possible. Dans ce cas, la premi�re note l'emporte sur la deuxi�me. Consid�rons l'extrait suivant de l'exemple de configuration de la section pr�c�dente :

BrowserMatch ^Mozilla/4         gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html
      

Tout d'abord, on recherche un en-t�te User-Agent qui signale un navigateur Netscape version 4.x. Ces versions ne g�rent pas la compression des types de fichiers autres que text/html. En outre, les versions 4.06, 4.07 et 4.08 ont des probl�mes avec la d�compression des fichiers html. Par cons�quent, nous d�sactivons compl�tement le filtre deflate pour ces derniers.

La troisi�me directive BrowserMatch corrige l'identit� sous laquelle se pr�sente le navigateur ; en effet, Microsoft Internet Explorer s'identifie aussi lui-m�me comme "Mozilla/4", mais par contre, il sait g�rer les contenus compress�s. On recherche donc la cha�ne additionnelle "MSIE" (\b signifie "par mots entiers") dans l'en-t�te User-Agent, et si elle est trouv�e, on annule les restrictions d�finies auparavant.

Note

Le filtre DEFLATE est toujours ins�r� apr�s les filtres RESOURCE comme PHP ou SSI. Il n'affecte jamais les sous-requ�tes internes.

Note

La variable d'environnement force-gzip, d�finie � l'aide de la directive SetEnv, permet d'ignorer la configuration de votre navigateur quant aux codages accept�s, et d'envoyer sans condition une sortie comprim�e.

D�compression de la sortie

Le module mod_deflate fournit aussi un filtre permettant de d�comprimer un corps de r�ponse comprim� par gzip. Pour activer cette fonctionnalit�, vous devez ins�rer le filtre INFLATE dans la cha�ne de filtrage en sortie via la directive SetOutputFilter ou AddOutputFilter, comme dans l'exemple suivant :

<Location /dav-area>
    ProxyPass http://example.com/
    SetOutputFilter INFLATE
</Location>
      

Dans cet exemple, les sorties comprim�es par gzip en provenance de example.com seront d�comprim�es afin de pouvoir �tre �ventuellement trait�es par d'autres filtres.

D�compression de l'entr�e

Le module mod_deflate fournit �galement un filtre permettant de d�comprimer un corps de requ�te comprim� par gzip. Pour activer cette fonctionnalit�, vous devez ins�rer le filtre DEFLATE dans la cha�ne de filtrage en entr�e via la directive SetInputFilter ou AddInputFilter, comme dans l'exemple suivant :

<Location /dav-area>
    SetInputFilter DEFLATE
</Location>
      

D�sormais, si une requ�te contient un en-t�te Content-Encoding: gzip, son corps sera automatiquement d�comprim�. Peu de navigateurs sont actuellement en mesure de comprimer les corps de requ�tes. Cependant, certaines applications sp�cialis�es supportent les requ�tes comprim�es, comme par exemple certains clients WebDAV.

Note � propos de l'en-t�te Content-Length

Si vous �valuez vous-m�me la taille du corps de requ�te, ne faites pas confiance � l'en-t�te Content-Length! L'en-t�te Content-Length indique la longueur des donn�es en provenance du client, et non la quantit� d'octets que repr�sente le flux de donn�es d�compress�.

top

Prise en compte des serveurs mandataires

Le module mod_deflate envoie un en-t�te de r�ponse HTTP Vary: Accept-Encoding pour avertir les mandataires qu'une r�ponse enregistr�e dans le cache ne doit �tre envoy�e qu'aux clients qui ont envoy� l'en-t�te de requ�te Accept-Encoding appropri�. Ceci permet d'�viter l'envoi d'un contenu comprim� � un client qui ne sera pas en mesure de l'interpr�ter.

Si vous avez d�fini des exclusions sp�cifiques d�pendant, par exemple, de l'en-t�te User-Agent, vous devez ajouter manuellement des donn�es � l'en-t�te Vary afin d'informer les mandataires des restrictions suppl�mentaires. Par exemple, dans la configuration classique o� l'addition du filtre DEFLATE d�pend du contenu de l'en-t�te User-Agent, vous devez sp�cifier :

      Header append Vary User-Agent
    

Si votre d�cision de comprimer le contenu d�pend d'autres informations que celles contenues dans les en-t�tes de la requ�te (par exemple la version HTTP), vous devez attribuer � l'en-t�te Vary la valeur *, ce qui permet d'emp�cher les mandataires compatibles de tout mettre en cache.

Exemple

      Header set Vary *
      
top

DeflateBufferSize Directive

Description:Taille du fragment que zlib devra comprimer en une seule fois
Syntaxe:DeflateBufferSize valeur
D�faut:DeflateBufferSize 8096
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateBufferSize permet de sp�cifier la taille en octets du fragment que zlib devra comprimer en une seule fois.

top

DeflateCompressionLevel Directive

Description:Le niveau de compression que nous appliquons � la sortie
Syntaxe:DeflateCompressionLevel valeur
D�faut:La valeur par d�faut de zlib
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateCompressionLevel permet de sp�cifier le niveau de compression � utiliser ; plus grande est la valeur, meilleure sera la compression, mais plus grand sera aussi le temps CPU n�cessaire pour effectuer le traitement.

La valeur doit �tre comprise entre 1 (compression minimale) et 9 (compression maximale).

top

DeflateFilterNote Directive

Description:Enregistre le taux de compression sous la forme d'une note � des fins de journalisation
Syntaxe:DeflateFilterNote [type] nom de la note
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateFilterNote permet de sp�cifier qu'une note � propos du taux de compression doit �tre attach�e � la requ�te. Le nom de la note est pass� sous la forme d'un argument de la directive. Vous pouvez utiliser cette note � des fins statistiques en enregistrant sa valeur dans votre journal des acc�s.

Exemple

      DeflateFilterNote ratio
    
      LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
      CustomLog logs/deflate_log deflate
      

Pour extraire des informations plus pr�cises de vos journaux, vous pouvez utiliser l'argument type pour sp�cifier le type de donn�es de la note enregistr�e dans le journal. type peut prendre une des valeurs suivantes :

Input
Enregistre dans la note la taille en octets du flux en entr�e du filtre.
Output
Enregistre dans la note la taille en octets du flux en sortie du filtre.
Ratio
Enregistre le taux de compression (sortie/entr�e * 100) dans la note. Il s'agit de la valeur par d�faut si l'argument type est omis.

Vous pouvez donc configurer votre journalisation de la mani�re suivante :

Journalisation d�taill�e

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio

LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate

Voir aussi

top

DeflateMemLevel Directive

Description:La quantit� de m�moire utilisable par zlib pour la compression
Syntaxe:DeflateMemLevel valeur
D�faut:DeflateMemLevel 9
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateMemLevel permet de sp�cifier la quantit� de m�moire utilisable par zlib pour la compression (une valeur comprise entre 1 et 9).

top

DeflateWindowSize Directive

Description:Taille de la fen�tre de compression zlib
Syntaxe:DeflateWindowSize valeur
D�faut:DeflateWindowSize 15
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateWindowSize permet de sp�cifier la fen�tre de compression zlib (une valeur comprise entre 1 et 15). En g�n�ral, plus grande sera la taille de la fen�tre, plus grand sera le taux de compression auquel on pourra s'attendre.

Langues Disponibles:  en  |  fr  |  ja  |  ko 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.