]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_deflate.xml.fr
update transformation
[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: 1586542:1610501 (outdated) -->
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     <note type="warning"><title>Compression et TLS</title>
43         <p>Certaines applications web sont vuln&eacute;rables &agrave; une attaque pour
44         vol d'informations lorsqu'une connexion TLS transporte des
45         donn&eacute;es compress&eacute;es par deflate. Pour plus de d&eacute;tails,
46         documentez-vous sur la famille d'attaques "BREACH".</p>
47     </note>
48     <p>Voici un exemple simple de configuration qui permet de comprimer
49     les types de contenu &agrave; base de texte.</p>
50
51     <example><title>Ne comprime que certains types de documents</title>
52     <highlight language="config">
53       AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
54     </highlight>
55     </example>
56
57 </section>
58
59 <section id="enable"><title>Activation de la compression</title>
60     <note type="warning"><title>Compression et TLS</title>
61         <p>Certaines applications web sont vuln&eacute;rables &agrave; une attaque pour
62         vol d'informations lorsqu'une connexion TLS transporte des
63         donn&eacute;es compress&eacute;es par deflate. Pour plus de d&eacute;tails,
64         documentez-vous sur la famille d'attaques "BREACH".</p>
65     </note>
66
67     <section id="output"><title>Compression de la sortie</title>
68       <p>La compression est impl&eacute;ment&eacute;e par le <a
69       href="../filter.html">filtre</a> <code>DEFLATE</code>. La
70       directive suivante active la compression des documents dans le
71       conteneur o&ugrave; elle est plac&eacute;e :</p>
72
73       <highlight language="config">
74 SetOutputFilter DEFLATE
75 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip   
76         </highlight>
77
78       <p>Si vous voulez limiter la compression &agrave; certains types MIME
79       particuliers, vous pouvez utiliser la directive <directive
80       module="mod_filter">AddOutputFilterByType</directive>. Voici un exemple
81       o&ugrave; la compression n'est activ&eacute;e que pour les fichiers html de la
82       documentation d'Apache :</p>
83
84       <highlight language="config">
85 &lt;Directory "/your-server-root/manual"&gt;
86     AddOutputFilterByType DEFLATE text/html
87 &lt;/Directory&gt;
88       </highlight>
89
90       <note><title>Note</title>
91         Le filtre <code>DEFLATE</code> est toujours ins&eacute;r&eacute; apr&egrave;s les
92         filtres RESOURCE comme PHP ou SSI. Il n'affecte jamais les
93         sous-requ&ecirc;tes internes.
94       </note>
95       <note><title>Note</title>
96         La variable d'environnement <code>force-gzip</code>, d&eacute;finie &agrave;
97         l'aide de la directive <directive
98         module="mod_env">SetEnv</directive>, permet d'ignorer la
99         configuration de votre navigateur quant aux codages accept&eacute;s, et
100         d'envoyer sans condition une sortie comprim&eacute;e.
101       </note>
102
103     </section>
104     <section id="inflate"><title>D&eacute;compression de la sortie</title>
105       <p>Le module <module>mod_deflate</module> fournit aussi un filtre
106       permettant de d&eacute;comprimer un corps de r&eacute;ponse comprim&eacute; par gzip.
107       Pour activer cette fonctionnalit&eacute;, vous devez ins&eacute;rer le filtre
108       <code>INFLATE</code> dans la cha&icirc;ne de filtrage en sortie via la
109       directive <directive module="core">SetOutputFilter</directive> ou
110       <directive module="mod_mime">AddOutputFilter</directive>, comme
111       dans l'exemple suivant :</p>
112
113       <highlight language="config">
114 &lt;Location /dav-area&gt;
115     ProxyPass http://example.com/
116     SetOutputFilter INFLATE
117 &lt;/Location&gt;
118       </highlight>
119
120       <p>Dans cet exemple, les sorties comprim&eacute;es par gzip en
121       provenance de example.com seront d&eacute;comprim&eacute;es afin de pouvoir
122       &ecirc;tre &eacute;ventuellement trait&eacute;es par d'autres filtres.
123       </p>
124
125     </section>
126     <section id="input"><title>D&eacute;compression de l'entr&eacute;e</title>
127       <p>Le module <module>mod_deflate</module> fournit &eacute;galement un filtre
128       permettant de d&eacute;comprimer un corps de requ&ecirc;te comprim&eacute; par gzip.
129       Pour activer cette fonctionnalit&eacute;, vous devez ins&eacute;rer le filtre
130       <code>DEFLATE</code> dans la cha&icirc;ne de filtrage en entr&eacute;e via la
131       directive <directive module="core">SetInputFilter</directive> ou
132       <directive module="mod_mime">AddInputFilter</directive>, comme
133       dans l'exemple suivant :</p>
134
135       <highlight language="config">
136 &lt;Location /dav-area&gt;
137     SetInputFilter DEFLATE
138 &lt;/Location&gt;
139       </highlight>
140
141       <p>D&eacute;sormais, si une requ&ecirc;te contient un en-t&ecirc;te
142       <code>Content-Encoding: gzip</code>, son corps sera
143       automatiquement d&eacute;comprim&eacute;. Peu de navigateurs sont actuellement
144       en mesure de comprimer les corps de requ&ecirc;tes. Cependant,
145       certaines applications sp&eacute;cialis&eacute;es supportent les requ&ecirc;tes
146       comprim&eacute;es, comme par exemple certains clients <a
147       href="http://www.webdav.org">WebDAV</a>.</p>
148
149       <note type="warning"><title>Note &agrave; propos de l'en-t&ecirc;te
150       <code>Content-Length</code></title>
151         <p>Si vous &eacute;valuez vous-m&ecirc;me la taille du corps de requ&ecirc;te,
152         <em>ne faites pas confiance &agrave; l'en-t&ecirc;te
153         <code>Content-Length</code>!</em> L'en-t&ecirc;te
154         Content-Length indique la longueur des donn&eacute;es en provenance du
155         client, et <em>non</em> la quantit&eacute; d'octets que repr&eacute;sente le
156         flux de donn&eacute;es d&eacute;compress&eacute;.</p>
157       </note>
158     </section>
159 </section>
160
161 <section id="proxies"><title>Prise en compte des serveurs mandataires</title>
162
163     <p>Le module <module>mod_deflate</module> envoie un en-t&ecirc;te de
164     r&eacute;ponse HTTP <code>Vary: Accept-Encoding</code> pour avertir les
165     mandataires qu'une r&eacute;ponse enregistr&eacute;e dans le cache ne doit &ecirc;tre
166     envoy&eacute;e qu'aux clients qui ont envoy&eacute; l'en-t&ecirc;te de requ&ecirc;te
167     <code>Accept-Encoding</code> appropri&eacute;. Ceci permet d'&eacute;viter l'envoi
168     d'un contenu comprim&eacute; &agrave; un client qui ne sera pas en mesure
169     de l'interpr&eacute;ter.</p>
170
171     <p>Si vous avez d&eacute;fini des exclusions sp&eacute;cifiques d&eacute;pendant, par
172     exemple, de l'en-t&ecirc;te <code>User-Agent</code>, vous devez
173     ajouter manuellement des donn&eacute;es &agrave; l'en-t&ecirc;te <code>Vary</code> afin
174     d'informer les mandataires des restrictions suppl&eacute;mentaires. Par
175     exemple, dans la configuration classique o&ugrave; l'addition du filtre
176     <code>DEFLATE</code> d&eacute;pend du contenu de l'en-t&ecirc;te
177     <code>User-Agent</code>, vous devez sp&eacute;cifier :</p>
178
179     <highlight language="config">
180       Header append Vary User-Agent
181     </highlight>
182
183     <p>Si votre d&eacute;cision de comprimer le contenu d&eacute;pend d'autres
184     informations que celles contenues dans les en-t&ecirc;tes de la requ&ecirc;te
185     (par exemple la version HTTP), vous devez attribuer &agrave; l'en-t&ecirc;te
186     <code>Vary</code> la valeur <code>*</code>, ce qui permet d'emp&ecirc;cher
187     les mandataires compatibles de tout mettre en cache.</p>
188
189     <example><title>Exemple</title>
190     <highlight language="config">
191       Header set Vary *
192       </highlight>
193     </example>
194 </section>
195
196 <directivesynopsis>
197 <name>DeflateFilterNote</name>
198 <description>Enregistre le taux de compression sous la forme d'une note
199 &agrave; des fins de journalisation</description>
200 <syntax>DeflateFilterNote [<var>type</var>] <var>nom de la note</var></syntax>
201 <contextlist><context>server config</context><context>virtual host</context>
202 </contextlist>
203
204 <usage>
205     <p>La directive <directive>DeflateFilterNote</directive> permet de
206     sp&eacute;cifier qu'une note &agrave; propos du taux de compression doit &ecirc;tre
207     attach&eacute;e &agrave; la requ&ecirc;te. Le nom de la note est pass&eacute; sous la forme
208     d'un argument de la directive. Vous pouvez utiliser cette note &agrave; des
209     fins statistiques en enregistrant sa valeur dans votre <a
210     href="../logs.html#accesslog">journal des acc&egrave;s</a>.</p>
211
212     <example><title>Exemple</title>
213       <highlight language="config">
214       DeflateFilterNote ratio
215     
216       LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
217       CustomLog logs/deflate_log deflate
218       </highlight>
219     </example>
220
221     <p>Pour extraire des informations plus pr&eacute;cises de vos journaux,
222     vous pouvez utiliser l'argument <var>type</var> pour sp&eacute;cifier le
223     type de donn&eacute;es de la note enregistr&eacute;e dans le journal.
224     <var>type</var> peut prendre une des valeurs suivantes :</p>
225
226     <dl>
227       <dt><code>Input</code></dt>
228       <dd>Enregistre dans la note la taille en octets du flux en entr&eacute;e
229       du filtre.</dd>
230
231       <dt><code>Output</code></dt>
232       <dd>Enregistre dans la note la taille en octets du flux en sortie
233       du filtre.</dd>
234
235       <dt><code>Ratio</code></dt>
236       <dd>Enregistre le taux de compression (<code>sortie/entr&eacute;e *
237       100</code>) dans la note. Il s'agit de la valeur par d&eacute;faut si
238       l'argument <var>type</var> est omis.</dd>
239     </dl>
240
241     <p>Vous pouvez donc configurer votre journalisation de la mani&egrave;re
242     suivante :</p>
243
244     <example><title>Journalisation d&eacute;taill&eacute;e</title>
245       <highlight language="config">
246 DeflateFilterNote Input instream
247 DeflateFilterNote Output outstream
248 DeflateFilterNote Ratio ratio
249
250 LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
251 CustomLog logs/deflate_log deflate
252 </highlight>
253     </example>
254 </usage>
255 <seealso><module>mod_log_config</module></seealso>
256 </directivesynopsis>
257
258 <directivesynopsis>
259 <name>DeflateBufferSize</name>
260 <description>Taille du fragment que zlib devra comprimer en une seule
261 fois</description>
262 <syntax>DeflateBufferSize <var>valeur</var></syntax>
263 <default>DeflateBufferSize 8096</default>
264 <contextlist><context>server config</context><context>virtual host</context>
265 </contextlist>
266
267 <usage>
268     <p>La directive <directive>DeflateBufferSize</directive> permet de
269     sp&eacute;cifier la taille en octets du fragment que zlib devra comprimer
270     en une seule fois.</p>
271 </usage>
272 </directivesynopsis>
273
274 <directivesynopsis>
275 <name>DeflateWindowSize</name>
276 <description>Taille de la fen&ecirc;tre de compression zlib</description>
277 <syntax>DeflateWindowSize <var>valeur</var></syntax>
278 <default>DeflateWindowSize 15</default>
279 <contextlist><context>server config</context><context>virtual host</context>
280 </contextlist>
281
282 <usage>
283     <p>La directive <directive>DeflateWindowSize</directive> permet de
284     sp&eacute;cifier la fen&ecirc;tre de compression zlib (une valeur comprise entre
285     1 et 15). En g&eacute;n&eacute;ral, plus grande sera la taille de la fen&ecirc;tre, plus
286     grand sera le taux de compression auquel on pourra s'attendre.</p>
287 </usage>
288 </directivesynopsis>
289
290 <directivesynopsis>
291
292 <name>DeflateMemLevel</name>
293 <description>La quantit&eacute; de m&eacute;moire utilisable par zlib pour la
294 compression</description>
295 <syntax>DeflateMemLevel <var>valeur</var></syntax>
296 <default>DeflateMemLevel 9</default>
297 <contextlist><context>server config</context><context>virtual host</context>
298 </contextlist>
299
300 <usage>
301     <p>La directive <directive>DeflateMemLevel</directive> permet de
302     sp&eacute;cifier la quantit&eacute; de m&eacute;moire utilisable par zlib pour la
303     compression (une valeur comprise entre 1 et 9).</p>
304 </usage>
305 </directivesynopsis>
306
307 <directivesynopsis>
308 <name>DeflateCompressionLevel</name>
309 <description>Le niveau de compression que nous appliquons &agrave; la
310 sortie</description>
311 <syntax>DeflateCompressionLevel <var>valeur</var></syntax>
312 <default>La valeur par d&eacute;faut de zlib</default>
313 <contextlist><context>server config</context><context>virtual host</context>
314 </contextlist>
315
316 <usage>
317     <p>La directive <directive>DeflateCompressionLevel</directive>
318     permet de sp&eacute;cifier le niveau de compression &agrave; utiliser ; plus
319     grande est la valeur, meilleure sera la compression, mais plus grand
320     sera aussi le temps CPU n&eacute;cessaire pour effectuer le
321     traitement.</p>
322     <p>La valeur doit &ecirc;tre comprise entre 1 (compression minimale) et 9
323     (compression maximale).</p>
324 </usage>
325 </directivesynopsis>
326
327 <directivesynopsis>
328 <name>DeflateAlterETag</name>
329 <description>Comment l'en-t&ecirc;te sortant ETag doit &ecirc;tre modifi&eacute; au cours
330 de la compression</description>
331 <syntax>DeflateAlterETag AddSuffix|NoChange|Remove</syntax>
332 <default>DeflateAlterETag AddSuffix</default>
333 <contextlist><context>server config</context><context>virtual host</context>
334 </contextlist>
335
336 <usage>
337     <p>La directive <directive>DeflateAlterETag</directive> permet de
338     sp&eacute;cifier comment l'en-t&ecirc;te ETag doit &ecirc;tre modifi&eacute; lorsqu'une
339     r&eacute;ponse est compress&eacute;e.</p>
340     <dl>
341     <dt>AddSuffix</dt>
342     <dd><p>Ajoute la m&eacute;thode de compression &agrave; la fin de l'en-t&ecirc;te, ce
343     qui a pour effet d'attribuer un en-t&ecirc;te ETag unique aux
344     repr&eacute;sentations compress&eacute;es et non compress&eacute;es. C'est l'option par
345     d&eacute;faut depuis la version 2.4.0, mais emp&ecirc;che de servir des
346     codes d'&eacute;tat "HTTP Not Modified" (304) en r&eacute;ponse aux requ&ecirc;tes pour un
347     contenu compress&eacute;.</p></dd>
348     <dt>NoChange</dt>
349     <dd><p>Ne modifie pas l'en-t&ecirc;te ETag dans une r&eacute;ponse compress&eacute;e.
350     C'&eacute;tait l'option par
351     d&eacute;faut avant la version 2.4.0, mais cela ne respectait pas la
352     pr&eacute;conisation HTTP/1.1 selon laquelle chaque repr&eacute;sentation de la
353     m&ecirc;me ressource doit poss&eacute;der un en-t&ecirc;te ETag unique.</p></dd>
354     <dt>Remove</dt>
355     <dd><p>Supprime l'en-t&ecirc;te ETag dans les r&eacute;ponses compress&eacute;es, ce qui
356     a pour effet de rendre impossibles certaines requ&ecirc;tes
357     conditionnelles, mais permet d'&eacute;viter les inconv&eacute;nients des options
358     pr&eacute;c&eacute;dentes.</p></dd>
359     </dl>
360 </usage>
361 </directivesynopsis>
362
363 </modulesynopsis>
364