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