mirror of
https://github.com/apache/httpd.git
synced 2025-08-20 16:09:55 +00:00

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@979030 13f79535-47bb-0310-9956-ffa450edef68
394 lines
17 KiB
Plaintext
394 lines
17 KiB
Plaintext
<?xml version="1.0"?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
|
|
<!-- English Revision : 966890 -->
|
|
<!-- French translation : Lucien GENTIS -->
|
|
<!-- Reviewed by : Vincent Deffontaines -->
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<modulesynopsis metafile="mod_deflate.xml.meta">
|
|
|
|
<name>mod_deflate</name>
|
|
<description>Comprime le contenu avant de le servir au
|
|
client</description>
|
|
<status>Extension</status>
|
|
<sourcefile>mod_deflate.c</sourcefile>
|
|
<identifier>deflate_module</identifier>
|
|
|
|
<summary>
|
|
<p>Le module <module>mod_deflate</module> implémente le filtre de
|
|
sortie <code>DEFLATE</code> qui permet de comprimer la sortie de
|
|
votre serveur avant de l'envoyer au client sur le réseau.</p>
|
|
</summary>
|
|
<seealso><a href="../filter.html">Les filtres</a></seealso>
|
|
|
|
<section id="recommended"><title>Exemples de configurations</title>
|
|
<p>Voici un exemple simple de configuration pour les
|
|
impatients.</p>
|
|
|
|
<example><title>Ne comprime que certains types de documents</title>
|
|
AddOutputFilterByType DEFLATE text/html text/plain text/xml
|
|
</example>
|
|
|
|
<p>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.</p>
|
|
|
|
<example><title>Comprime tout, sauf les images</title>
|
|
<Location /><br />
|
|
<indent>
|
|
# Insère le filtre<br />
|
|
SetOutputFilter DEFLATE<br />
|
|
<br />
|
|
# Netscape 4.x a quelques problèmes ...<br />
|
|
BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
|
|
<br />
|
|
# Netscape 4.06-4.08 ont d'autres problèmes<br />
|
|
BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
|
|
<br />
|
|
# MSIE se fait passer pour Netscape, mais ça marche<br />
|
|
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
|
|
# Ne pas comprimer les images<br />
|
|
SetEnvIfNoCase Request_URI \<br />
|
|
<indent>
|
|
\.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
|
|
</indent>
|
|
<br />
|
|
# On s'assure que les mandataires ne servent pas le mauvais
|
|
# contenu<br />
|
|
Header append Vary User-Agent env=!dont-vary<br />
|
|
</indent>
|
|
</Location>
|
|
</example>
|
|
|
|
</section>
|
|
|
|
<section id="enable"><title>Activation de la compression</title>
|
|
|
|
<section id="output"><title>Compression de la sortie</title>
|
|
<p>La compression est implémentée par le <a
|
|
href="../filter.html">filtre</a> <code>DEFLATE</code>. La
|
|
directive suivante active la compression des documents dans le
|
|
conteneur où elle est placée :</p>
|
|
|
|
<example>
|
|
SetOutputFilter DEFLATE
|
|
</example>
|
|
|
|
<p>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 <code>gzip-only-text/html</code> à <code>1</code>
|
|
pour ne permettre que la compression des fichiers html (voir
|
|
ci-dessous). Si vous définissez cette note à <em>toute autre
|
|
valeur que <code>1</code></em>, elle sera ignorée.</p>
|
|
|
|
<p>Si vous voulez limiter la compression à certains types MIME
|
|
particuliers, vous pouvez utiliser la directive <directive
|
|
module="mod_filter">AddOutputFilterByType</directive>. Voici un exemple
|
|
où la compression n'est activée que pour les fichiers html de la
|
|
documentation d'Apache :</p>
|
|
|
|
<example>
|
|
<Directory "/racine-de-votre-serveur/manual"><br />
|
|
<indent>
|
|
AddOutputFilterByType DEFLATE text/html<br />
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
|
|
<p>Pour les navigateurs qui ont des problèmes avec la compression
|
|
de tous les types de fichiers, vous pouvez utiliser la directive
|
|
<directive module="mod_setenvif">BrowserMatch</directive> pour
|
|
définir la note <code>no-gzip</code>, pour le navigateur
|
|
considéré, de façon à ce qu'aucune compression ne soit effectuée.
|
|
Vous pouvez combiner <code>no-gzip</code> avec
|
|
<code>gzip-only-text/html</code> 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'<a
|
|
href="#recommended">exemple de configuration</a> de la section
|
|
précédente :</p>
|
|
|
|
<example>
|
|
BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
|
|
BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
|
|
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
|
|
</example>
|
|
|
|
<p>Tout d'abord, on recherche un en-tête <code>User-Agent</code>
|
|
qui signale un navigateur Netscape version 4.x. Ces versions ne
|
|
gèrent pas la compression des types de fichiers autres que
|
|
<code>text/html</code>. 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.</p>
|
|
|
|
<p>La troisième directive <directive
|
|
module="mod_setenvif">BrowserMatch</directive> 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" (<code>\b</code>
|
|
signifie "par mots entiers") dans l'en-tête
|
|
<code>User-Agent</code>, et si elle est trouvée, on annule les
|
|
restrictions définies auparavant.</p>
|
|
|
|
<note><title>Note</title>
|
|
Le filtre <code>DEFLATE</code> est toujours inséré après les
|
|
filtres RESOURCE comme PHP ou SSI. Il n'affecte jamais les
|
|
sous-requêtes internes.
|
|
</note>
|
|
<note><title>Note</title>
|
|
La variable d'environnement <code>force-gzip</code>, définie à
|
|
l'aide de la directive <directive
|
|
module="core">SetEnv</directive>, permet d'ignorer la
|
|
configuration de votre navigateur quant aux codages acceptés, et
|
|
d'envoyer sans condition une sortie comprimée.
|
|
</note>
|
|
|
|
</section>
|
|
<section id="inflate"><title>Décompression de la sortie</title>
|
|
<p>Le module <module>mod_deflate</module> 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
|
|
<code>INFLATE</code> dans la chaîne de filtrage en sortie via la
|
|
directive <directive module="core">SetOutputFilter</directive> ou
|
|
<directive module="mod_mime">AddOutputFilter</directive>, comme
|
|
dans l'exemple suivant :</p>
|
|
|
|
<example>
|
|
<Location /dav-area><br />
|
|
<indent>
|
|
ProxyPass http://example.com/<br />
|
|
SetOutputFilter INFLATE<br />
|
|
</indent>
|
|
</Location>
|
|
</example>
|
|
|
|
<p>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.
|
|
</p>
|
|
|
|
</section>
|
|
<section id="input"><title>Décompression de l'entrée</title>
|
|
<p>Le module <module>mod_deflate</module> 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
|
|
<code>DEFLATE</code> dans la chaîne de filtrage en entrée via la
|
|
directive <directive module="core">SetInputFilter</directive> ou
|
|
<directive module="mod_mime">AddInputFilter</directive>, comme
|
|
dans l'exemple suivant :</p>
|
|
|
|
<example>
|
|
<Location /dav-area><br />
|
|
<indent>
|
|
SetInputFilter DEFLATE<br />
|
|
</indent>
|
|
</Location>
|
|
</example>
|
|
|
|
<p>Désormais, si une requête contient un en-tête
|
|
<code>Content-Encoding: gzip</code>, 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 <a
|
|
href="http://www.webdav.org">WebDAV</a>.</p>
|
|
|
|
<note type="warning"><title>Note à propos de l'en-tête
|
|
<code>Content-Length</code></title>
|
|
<p>Si vous évaluez vous-même la taille du corps de requête,
|
|
<em>ne faites pas confiance à l'en-tête
|
|
<code>Content-Length</code>!</em> L'en-tête
|
|
Content-Length indique la longueur des données en provenance du
|
|
client, et <em>non</em> la quantité d'octets que représente le
|
|
flux de données décompressé.</p>
|
|
</note>
|
|
</section>
|
|
</section>
|
|
|
|
<section id="proxies"><title>Prise en compte des serveurs mandataires</title>
|
|
|
|
<p>Le module <module>mod_deflate</module> envoie un en-tête de
|
|
réponse HTTP <code>Vary: Accept-Encoding</code> 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
|
|
<code>Accept-Encoding</code> approprié. Ceci permet d'éviter l'envoi
|
|
d'un contenu comprimé à un client qui ne sera pas en mesure
|
|
de l'interpréter.</p>
|
|
|
|
<p>Si vous avez défini des exclusions spécifiques dépendant, par
|
|
exemple, de l'en-tête <code>User-Agent</code>, vous devez
|
|
ajouter manuellement des données à l'en-tête <code>Vary</code> afin
|
|
d'informer les mandataires des restrictions supplémentaires. Par
|
|
exemple, dans la configuration classique où l'addition du filtre
|
|
<code>DEFLATE</code> dépend du contenu de l'en-tête
|
|
<code>User-Agent</code>, vous devez spécifier :</p>
|
|
|
|
<example>
|
|
Header append Vary User-Agent
|
|
</example>
|
|
|
|
<p>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
|
|
<code>Vary</code> la valeur <code>*</code>, ce qui permet d'empêcher
|
|
les mandataires compatibles de tout mettre en cache.</p>
|
|
|
|
<example><title>Exemple</title>
|
|
Header set Vary *
|
|
</example>
|
|
</section>
|
|
|
|
<directivesynopsis>
|
|
<name>DeflateFilterNote</name>
|
|
<description>Enregistre le taux de compression sous la forme d'une note
|
|
à des fins de journalisation</description>
|
|
<syntax>DeflateFilterNote [<var>type</var>] <var>nom de la note</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
<compatibility><var>type</var> est disponible depuis la version 2.0.45
|
|
d'Apache</compatibility>
|
|
|
|
<usage>
|
|
<p>La directive <directive>DeflateFilterNote</directive> 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 <a
|
|
href="../logs.html#accesslog">journal des accès</a>.</p>
|
|
|
|
<example><title>Exemple</title>
|
|
DeflateFilterNote ratio<br />
|
|
<br />
|
|
LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate<br />
|
|
CustomLog logs/deflate_log deflate
|
|
</example>
|
|
|
|
<p>Pour extraire des informations plus précises de vos journaux,
|
|
vous pouvez utiliser l'argument <var>type</var> pour spécifier le
|
|
type de données de la note enregistrée dans le journal.
|
|
<var>type</var> peut prendre une des valeurs suivantes :</p>
|
|
|
|
<dl>
|
|
<dt><code>Input</code></dt>
|
|
<dd>Enregistre dans la note la taille en octets du flux en entrée
|
|
du filtre.</dd>
|
|
|
|
<dt><code>Output</code></dt>
|
|
<dd>Enregistre dans la note la taille en octets du flux en sortie
|
|
du filtre.</dd>
|
|
|
|
<dt><code>Ratio</code></dt>
|
|
<dd>Enregistre le taux de compression (<code>sortie/entrée *
|
|
100</code>) dans la note. Il s'agit de la valeur par défaut si
|
|
l'argument <var>type</var> est omis.</dd>
|
|
</dl>
|
|
|
|
<p>Vous pouvez donc configurer votre journalisation de la manière
|
|
suivante :</p>
|
|
|
|
<example><title>Journalisation détaillée</title>
|
|
DeflateFilterNote Input instream<br />
|
|
DeflateFilterNote Output outstream<br />
|
|
DeflateFilterNote Ratio ratio<br />
|
|
<br />
|
|
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate<br />
|
|
CustomLog logs/deflate_log deflate
|
|
</example>
|
|
</usage>
|
|
<seealso><module>mod_log_config</module></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DeflateBufferSize</name>
|
|
<description>Taille du fragment que zlib devra comprimer en une seule
|
|
fois</description>
|
|
<syntax>DeflateBufferSize <var>valeur</var></syntax>
|
|
<default>DeflateBufferSize 8096</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>La directive <directive>DeflateBufferSize</directive> permet de
|
|
spécifier la taille en octets du fragment que zlib devra comprimer
|
|
en une seule fois.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DeflateWindowSize</name>
|
|
<description>Taille de la fenêtre de compression zlib</description>
|
|
<syntax>DeflateWindowSize <var>valeur</var></syntax>
|
|
<default>DeflateWindowSize 15</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>La directive <directive>DeflateWindowSize</directive> 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.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
|
|
<name>DeflateMemLevel</name>
|
|
<description>La quantité de mémoire utilisable par zlib pour la
|
|
compression</description>
|
|
<syntax>DeflateMemLevel <var>valeur</var></syntax>
|
|
<default>DeflateMemLevel 9</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>La directive <directive>DeflateMemLevel</directive> permet de
|
|
spécifier la quantité de mémoire utilisable par zlib pour la
|
|
compression (une valeur comprise entre 1 et 9).</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DeflateCompressionLevel</name>
|
|
<description>Le niveau de compression que nous appliquons à la
|
|
sortie</description>
|
|
<syntax>DeflateCompressionLevel <var>valeur</var></syntax>
|
|
<default>La valeur par défaut de zlib</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
<compatibility>Cette directive est disponible depuis la version 2.0.45
|
|
d'Apache</compatibility>
|
|
|
|
<usage>
|
|
<p>La directive <directive>DeflateCompressionLevel</directive>
|
|
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.</p>
|
|
<p>La valeur doit être comprise entre 1 (compression minimale) et 9
|
|
(compression maximale).</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
|
|
</modulesynopsis>
|
|
|