<-
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

Compression et TLS

Certaines applications web sont vuln´┐Żrables aux attaques visant le vol d'information lorsqu'une connexion TLS transmet des donn´┐Żes compress´┐Żes par deflate. Pour plus de d´┐Żtails, ´┐Żtudiez les attaques de la famille "BREACH".

Voici une configuration simple qui comprime les contenus ´┐Ż base de texte courants.

Ne comprime que certains types de documents

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
top

Activation de la compression

Compression et TLS

Certaines applications web sont vuln´┐Żrables aux attaques pour vol d'information lorsque la connexion TLS transmet des donn´┐Żes compress´┐Żes par deflate. Pour plus d'informations, voir en d´┐Żtails la famille d'attaques de type "BREACH".

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
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip

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>

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

DeflateInflateLimitRequestBody Directive

Description:Taille maximale des corps de requ´┐Żte d´┐Żcompress´┐Żs
Syntaxe:DeflateInflateLimitRequestBodyvalue
D´┐Żfaut:Aucune limite, mais LimitRequestBody s'applique apr´┐Żs la compression
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire, .htaccess
Statut:Extension
Module:mod_deflate
Compatibilit´┐Ż:Disponible ´┐Ż partir de la version 2.4.10 du serveur HTTP Apache

La directive DeflateInflateLimitRequestBody permet de sp´┐Żcifier la taille maximale d'un corps de requ´┐Żte d´┐Żcompress´┐Ż. Si elle n'est pas d´┐Żfinie, c'est la valeur de la directive LimitRequestBody qui s'applique au corps de requ´┐Żte d´┐Żcompress´┐Ż.

top

DeflateInflateRatioBurst Directive

Description:Nombre maximal de fois que le ratio de d´┐Żcompression d'un corps de requ´┐Żte peut ´┐Żtre d´┐Żpass´┐Ż
Syntaxe:DeflateInflateRatioBurst value
D´┐Żfaut:3
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire, .htaccess
Statut:Extension
Module:mod_deflate
Compatibilit´┐Ż:Disponible ´┐Ż partir de la version 2.4.10 du serveur HTTP Apache

La directive DeflateInflateRatioBurst permet de sp´┐Żcifier le nombre maximal de fois que la valeur de la directive DeflateInflateRatioLimit peut ´┐Żtre d´┐Żpass´┐Ż avant l'arr´┐Żt du traitement de la requ´┐Żte.

top

DeflateInflateRatioLimit Directive

Description:Ratio de d´┐Żcompression maximum pour les corps de requ´┐Żtes
Syntaxe:DeflateInflateRatioLimit value
D´┐Żfaut:200
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire, .htaccess
Statut:Extension
Module:mod_deflate
Compatibilit´┐Ż:Disponible ´┐Ż partir de la version 2.4.10 du serveur HTTP Apache

La directive DeflateInflateRatioLimit permet de d´┐Żfinir le ratio maximum entre la taille d'un corps de requ´┐Żte compress´┐Ż et sa taille d´┐Żcompress´┐Że. Ce ratio est v´┐Żrifi´┐Ż au fur et ´┐Ż mesure de l'arriv´┐Że du corps de requ´┐Żte, et s'il est d´┐Żpass´┐Ż plus de DeflateInflateRatioBurst fois, le traitement de la requ´┐Żte est interrompu.

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.