]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_deflate.xml.fr
ye gods what have I done
[apache] / docs / manual / mod / mod_deflate.xml.fr
1 <?xml version="1.0"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1421821 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <modulesynopsis metafile="mod_deflate.xml.meta">
26
27 <name>mod_deflate</name>
28 <description>Comprime le contenu avant de le servir au
29 client</description>
30 <status>Extension</status>
31 <sourcefile>mod_deflate.c</sourcefile>
32 <identifier>deflate_module</identifier>
33
34 <summary>
35     <p>Le module <module>mod_deflate</module> impl&eacute;mente le filtre de
36     sortie <code>DEFLATE</code> qui permet de comprimer la sortie de
37     votre serveur avant de l'envoyer au client sur le r&eacute;seau.</p>
38 </summary>
39 <seealso><a href="../filter.html">Les filtres</a></seealso>
40
41 <section id="recommended"><title>Exemples de configurations</title>
42     <p>Voici un exemple simple de configuration pour les
43     impatients.</p>
44
45     <example><title>Ne comprime que certains types de documents</title>
46     <highlight language="config">
47       AddOutputFilterByType DEFLATE text/html text/plain text/xml
48       </highlight>
49     </example>
50
51     <p>La configuration suivante, tout en produisant un contenu encore
52     plus comprim&eacute;, est aussi beaucoup plus compliqu&eacute;e. N'utilisez pas
53     cet exemple si vous ne comprenez pas tous les d&eacute;tails de la
54     configuration.</p>
55
56     <example><title>Comprime tout, sauf les images</title>
57       <highlight language="config">
58 &lt;Location /&gt;
59     # Insert filter
60     SetOutputFilter DEFLATE
61     
62     # Netscape 4.x a quelques probl&egrave;mes ...
63     BrowserMatch ^Mozilla/4         gzip-only-text/html
64     
65     # Netscape 4.06-4.08 ont d'autres probl&egrave;mes
66     BrowserMatch ^Mozilla/4\.0[678] no-gzip
67     
68     # MSIE se fait passer pour Netscape, mais &ccedil;a marche
69     BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html
70     # Ne pas comprimer les images
71     SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
72     
73     # On s'assure que les mandataires ne servent pas le mauvais
74      # contenu
75     Header append Vary User-Agent env=!dont-vary
76 &lt;/Location&gt;
77       </highlight>
78     </example>
79
80 </section>
81
82 <section id="enable"><title>Activation de la compression</title>
83
84     <section id="output"><title>Compression de la sortie</title>
85       <p>La compression est impl&eacute;ment&eacute;e par le <a
86       href="../filter.html">filtre</a> <code>DEFLATE</code>. La
87       directive suivante active la compression des documents dans le
88       conteneur o&ugrave; elle est plac&eacute;e :</p>
89
90       <highlight language="config">
91         SetOutputFilter DEFLATE
92         </highlight>
93
94       <p>Certains navigateurs populaires ne g&egrave;rent pas la compression de
95       tous les contenus, et pour r&eacute;soudre ce probl&egrave;me, vous pouvez
96       d&eacute;finir la note <code>gzip-only-text/html</code> &agrave; <code>1</code>
97       pour ne permettre que la compression des fichiers html (voir
98       ci-dessous). Si vous d&eacute;finissez cette note &agrave; <em>toute autre
99       valeur que <code>1</code></em>, elle sera ignor&eacute;e.</p>
100
101       <p>Si vous voulez limiter la compression &agrave; certains types MIME
102       particuliers, vous pouvez utiliser la directive <directive
103       module="mod_filter">AddOutputFilterByType</directive>. Voici un exemple
104       o&ugrave; la compression n'est activ&eacute;e que pour les fichiers html de la
105       documentation d'Apache :</p>
106
107       <highlight language="config">
108 &lt;Directory "/your-server-root/manual"&gt;
109     AddOutputFilterByType DEFLATE text/html
110 &lt;/Directory&gt;
111       </highlight>
112
113       <p>Pour les navigateurs qui ont des probl&egrave;mes avec la compression
114       de tous les types de fichiers, vous pouvez utiliser la directive
115       <directive module="mod_setenvif">BrowserMatch</directive> pour
116       d&eacute;finir la note <code>no-gzip</code>, pour le navigateur
117       consid&eacute;r&eacute;, de fa&ccedil;on &agrave; ce qu'aucune compression ne soit effectu&eacute;e.
118       Vous pouvez combiner <code>no-gzip</code> avec
119       <code>gzip-only-text/html</code> afin d'obtenir le meilleur
120       r&eacute;sultat possible. Dans ce cas, la premi&egrave;re note l'emporte sur la
121       deuxi&egrave;me. Consid&eacute;rons l'extrait suivant de l'<a
122       href="#recommended">exemple de configuration</a> de la section
123       pr&eacute;c&eacute;dente :</p>
124
125       <highlight language="config">
126 BrowserMatch ^Mozilla/4         gzip-only-text/html
127 BrowserMatch ^Mozilla/4\.0[678] no-gzip
128 BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html
129       </highlight>
130
131       <p>Tout d'abord, on recherche un en-t&ecirc;te <code>User-Agent</code>
132       qui signale un navigateur Netscape version 4.x. Ces versions ne
133       g&egrave;rent pas la compression des types de fichiers autres que
134       <code>text/html</code>. En outre, les versions 4.06, 4.07 et 4.08
135       ont des probl&egrave;mes avec la d&eacute;compression des fichiers html. Par
136       cons&eacute;quent, nous d&eacute;sactivons compl&egrave;tement le filtre deflate pour
137       ces derniers.</p>
138
139       <p>La troisi&egrave;me directive <directive
140       module="mod_setenvif">BrowserMatch</directive> corrige l'identit&eacute;
141       sous laquelle se pr&eacute;sente le navigateur ; en effet, Microsoft
142       Internet Explorer s'identifie aussi lui-m&ecirc;me comme "Mozilla/4",
143       mais par contre, il sait g&eacute;rer les contenus compress&eacute;s. On
144       recherche donc la cha&icirc;ne additionnelle "MSIE" (<code>\b</code>
145       signifie "par mots entiers") dans l'en-t&ecirc;te
146       <code>User-Agent</code>, et si elle est trouv&eacute;e, on annule les
147       restrictions d&eacute;finies auparavant.</p>
148
149       <note><title>Note</title>
150         Le filtre <code>DEFLATE</code> est toujours ins&eacute;r&eacute; apr&egrave;s les
151         filtres RESOURCE comme PHP ou SSI. Il n'affecte jamais les
152         sous-requ&ecirc;tes internes.
153       </note>
154       <note><title>Note</title>
155         La variable d'environnement <code>force-gzip</code>, d&eacute;finie &agrave;
156         l'aide de la directive <directive
157         module="mod_env">SetEnv</directive>, permet d'ignorer la
158         configuration de votre navigateur quant aux codages accept&eacute;s, et
159         d'envoyer sans condition une sortie comprim&eacute;e.
160       </note>
161
162     </section>
163     <section id="inflate"><title>D&eacute;compression de la sortie</title>
164       <p>Le module <module>mod_deflate</module> fournit aussi un filtre
165       permettant de d&eacute;comprimer un corps de r&eacute;ponse comprim&eacute; par gzip.
166       Pour activer cette fonctionnalit&eacute;, vous devez ins&eacute;rer le filtre
167       <code>INFLATE</code> dans la cha&icirc;ne de filtrage en sortie via la
168       directive <directive module="core">SetOutputFilter</directive> ou
169       <directive module="mod_mime">AddOutputFilter</directive>, comme
170       dans l'exemple suivant :</p>
171
172       <highlight language="config">
173 &lt;Location /dav-area&gt;
174     ProxyPass http://example.com/
175     SetOutputFilter INFLATE
176 &lt;/Location&gt;
177       </highlight>
178
179       <p>Dans cet exemple, les sorties comprim&eacute;es par gzip en
180       provenance de example.com seront d&eacute;comprim&eacute;es afin de pouvoir
181       &ecirc;tre &eacute;ventuellement trait&eacute;es par d'autres filtres.
182       </p>
183
184     </section>
185     <section id="input"><title>D&eacute;compression de l'entr&eacute;e</title>
186       <p>Le module <module>mod_deflate</module> fournit &eacute;galement un filtre
187       permettant de d&eacute;comprimer un corps de requ&ecirc;te comprim&eacute; par gzip.
188       Pour activer cette fonctionnalit&eacute;, vous devez ins&eacute;rer le filtre
189       <code>DEFLATE</code> dans la cha&icirc;ne de filtrage en entr&eacute;e via la
190       directive <directive module="core">SetInputFilter</directive> ou
191       <directive module="mod_mime">AddInputFilter</directive>, comme
192       dans l'exemple suivant :</p>
193
194       <highlight language="config">
195 &lt;Location /dav-area&gt;
196     SetInputFilter DEFLATE
197 &lt;/Location&gt;
198       </highlight>
199
200       <p>D&eacute;sormais, si une requ&ecirc;te contient un en-t&ecirc;te
201       <code>Content-Encoding: gzip</code>, son corps sera
202       automatiquement d&eacute;comprim&eacute;. Peu de navigateurs sont actuellement
203       en mesure de comprimer les corps de requ&ecirc;tes. Cependant,
204       certaines applications sp&eacute;cialis&eacute;es supportent les requ&ecirc;tes
205       comprim&eacute;es, comme par exemple certains clients <a
206       href="http://www.webdav.org">WebDAV</a>.</p>
207
208       <note type="warning"><title>Note &agrave; propos de l'en-t&ecirc;te
209       <code>Content-Length</code></title>
210         <p>Si vous &eacute;valuez vous-m&ecirc;me la taille du corps de requ&ecirc;te,
211         <em>ne faites pas confiance &agrave; l'en-t&ecirc;te
212         <code>Content-Length</code>!</em> L'en-t&ecirc;te
213         Content-Length indique la longueur des donn&eacute;es en provenance du
214         client, et <em>non</em> la quantit&eacute; d'octets que repr&eacute;sente le
215         flux de donn&eacute;es d&eacute;compress&eacute;.</p>
216       </note>
217     </section>
218 </section>
219
220 <section id="proxies"><title>Prise en compte des serveurs mandataires</title>
221
222     <p>Le module <module>mod_deflate</module> envoie un en-t&ecirc;te de
223     r&eacute;ponse HTTP <code>Vary: Accept-Encoding</code> pour avertir les
224     mandataires qu'une r&eacute;ponse enregistr&eacute;e dans le cache ne doit &ecirc;tre
225     envoy&eacute;e qu'aux clients qui ont envoy&eacute; l'en-t&ecirc;te de requ&ecirc;te
226     <code>Accept-Encoding</code> appropri&eacute;. Ceci permet d'&eacute;viter l'envoi
227     d'un contenu comprim&eacute; &agrave; un client qui ne sera pas en mesure
228     de l'interpr&eacute;ter.</p>
229
230     <p>Si vous avez d&eacute;fini des exclusions sp&eacute;cifiques d&eacute;pendant, par
231     exemple, de l'en-t&ecirc;te <code>User-Agent</code>, vous devez
232     ajouter manuellement des donn&eacute;es &agrave; l'en-t&ecirc;te <code>Vary</code> afin
233     d'informer les mandataires des restrictions suppl&eacute;mentaires. Par
234     exemple, dans la configuration classique o&ugrave; l'addition du filtre
235     <code>DEFLATE</code> d&eacute;pend du contenu de l'en-t&ecirc;te
236     <code>User-Agent</code>, vous devez sp&eacute;cifier :</p>
237
238     <highlight language="config">
239       Header append Vary User-Agent
240     </highlight>
241
242     <p>Si votre d&eacute;cision de comprimer le contenu d&eacute;pend d'autres
243     informations que celles contenues dans les en-t&ecirc;tes de la requ&ecirc;te
244     (par exemple la version HTTP), vous devez attribuer &agrave; l'en-t&ecirc;te
245     <code>Vary</code> la valeur <code>*</code>, ce qui permet d'emp&ecirc;cher
246     les mandataires compatibles de tout mettre en cache.</p>
247
248     <example><title>Exemple</title>
249     <highlight language="config">
250       Header set Vary *
251       </highlight>
252     </example>
253 </section>
254
255 <directivesynopsis>
256 <name>DeflateFilterNote</name>
257 <description>Enregistre le taux de compression sous la forme d'une note
258 &agrave; des fins de journalisation</description>
259 <syntax>DeflateFilterNote [<var>type</var>] <var>nom de la note</var></syntax>
260 <contextlist><context>server config</context><context>virtual host</context>
261 </contextlist>
262
263 <usage>
264     <p>La directive <directive>DeflateFilterNote</directive> permet de
265     sp&eacute;cifier qu'une note &agrave; propos du taux de compression doit &ecirc;tre
266     attach&eacute;e &agrave; la requ&ecirc;te. Le nom de la note est pass&eacute; sous la forme
267     d'un argument de la directive. Vous pouvez utiliser cette note &agrave; des
268     fins statistiques en enregistrant sa valeur dans votre <a
269     href="../logs.html#accesslog">journal des acc&egrave;s</a>.</p>
270
271     <example><title>Exemple</title>
272       <highlight language="config">
273       DeflateFilterNote ratio
274     
275       LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
276       CustomLog logs/deflate_log deflate
277       </highlight>
278     </example>
279
280     <p>Pour extraire des informations plus pr&eacute;cises de vos journaux,
281     vous pouvez utiliser l'argument <var>type</var> pour sp&eacute;cifier le
282     type de donn&eacute;es de la note enregistr&eacute;e dans le journal.
283     <var>type</var> peut prendre une des valeurs suivantes :</p>
284
285     <dl>
286       <dt><code>Input</code></dt>
287       <dd>Enregistre dans la note la taille en octets du flux en entr&eacute;e
288       du filtre.</dd>
289
290       <dt><code>Output</code></dt>
291       <dd>Enregistre dans la note la taille en octets du flux en sortie
292       du filtre.</dd>
293
294       <dt><code>Ratio</code></dt>
295       <dd>Enregistre le taux de compression (<code>sortie/entr&eacute;e *
296       100</code>) dans la note. Il s'agit de la valeur par d&eacute;faut si
297       l'argument <var>type</var> est omis.</dd>
298     </dl>
299
300     <p>Vous pouvez donc configurer votre journalisation de la mani&egrave;re
301     suivante :</p>
302
303     <example><title>Journalisation d&eacute;taill&eacute;e</title>
304       <highlight language="config">
305 DeflateFilterNote Input instream
306 DeflateFilterNote Output outstream
307 DeflateFilterNote Ratio ratio
308
309 LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
310 CustomLog logs/deflate_log deflate
311 </highlight>
312     </example>
313 </usage>
314 <seealso><module>mod_log_config</module></seealso>
315 </directivesynopsis>
316
317 <directivesynopsis>
318 <name>DeflateBufferSize</name>
319 <description>Taille du fragment que zlib devra comprimer en une seule
320 fois</description>
321 <syntax>DeflateBufferSize <var>valeur</var></syntax>
322 <default>DeflateBufferSize 8096</default>
323 <contextlist><context>server config</context><context>virtual host</context>
324 </contextlist>
325
326 <usage>
327     <p>La directive <directive>DeflateBufferSize</directive> permet de
328     sp&eacute;cifier la taille en octets du fragment que zlib devra comprimer
329     en une seule fois.</p>
330 </usage>
331 </directivesynopsis>
332
333 <directivesynopsis>
334 <name>DeflateWindowSize</name>
335 <description>Taille de la fen&ecirc;tre de compression zlib</description>
336 <syntax>DeflateWindowSize <var>valeur</var></syntax>
337 <default>DeflateWindowSize 15</default>
338 <contextlist><context>server config</context><context>virtual host</context>
339 </contextlist>
340
341 <usage>
342     <p>La directive <directive>DeflateWindowSize</directive> permet de
343     sp&eacute;cifier la fen&ecirc;tre de compression zlib (une valeur comprise entre
344     1 et 15). En g&eacute;n&eacute;ral, plus grande sera la taille de la fen&ecirc;tre, plus
345     grand sera le taux de compression auquel on pourra s'attendre.</p>
346 </usage>
347 </directivesynopsis>
348
349 <directivesynopsis>
350
351 <name>DeflateMemLevel</name>
352 <description>La quantit&eacute; de m&eacute;moire utilisable par zlib pour la
353 compression</description>
354 <syntax>DeflateMemLevel <var>valeur</var></syntax>
355 <default>DeflateMemLevel 9</default>
356 <contextlist><context>server config</context><context>virtual host</context>
357 </contextlist>
358
359 <usage>
360     <p>La directive <directive>DeflateMemLevel</directive> permet de
361     sp&eacute;cifier la quantit&eacute; de m&eacute;moire utilisable par zlib pour la
362     compression (une valeur comprise entre 1 et 9).</p>
363 </usage>
364 </directivesynopsis>
365
366 <directivesynopsis>
367 <name>DeflateCompressionLevel</name>
368 <description>Le niveau de compression que nous appliquons &agrave; la
369 sortie</description>
370 <syntax>DeflateCompressionLevel <var>valeur</var></syntax>
371 <default>La valeur par d&eacute;faut de zlib</default>
372 <contextlist><context>server config</context><context>virtual host</context>
373 </contextlist>
374
375 <usage>
376     <p>La directive <directive>DeflateCompressionLevel</directive>
377     permet de sp&eacute;cifier le niveau de compression &agrave; utiliser ; plus
378     grande est la valeur, meilleure sera la compression, mais plus grand
379     sera aussi le temps CPU n&eacute;cessaire pour effectuer le
380     traitement.</p>
381     <p>La valeur doit &ecirc;tre comprise entre 1 (compression minimale) et 9
382     (compression maximale).</p>
383 </usage>
384 </directivesynopsis>
385
386
387 </modulesynopsis>
388