2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1330988 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
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
16 http://www.apache.org/licenses/LICENSE-2.0
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.
25 <modulesynopsis metafile="mod_expires.xml.meta">
27 <name>mod_expires</name>
28 <description>Génération des en-têtes HTTP <code>Expires</code> et
29 <code>Cache-Control</code> en fonction de critères spécifiés par
30 l'utilisateur</description>
31 <status>Extension</status>
32 <sourcefile>mod_expires.c</sourcefile>
33 <identifier>expires_module</identifier>
36 <p>Ce module permet de contrôler la définition de l'en-tête HTTP
37 <code>Expires</code> et la directive <code>max-age</code> de
38 l'en-tête HTTP <code>Cache-Control</code> dans les réponses du
39 serveur. La date d'expiration peut être définie soit par rapport à
40 la date de dernière modification du fichier source, soit
41 par rapport à l'heure d'accès du client.</p>
43 <p>Ces en-têtes HTTP permettent d'informer le client quant à la
44 validité et à la persistence du document. S'il est présent dans le
45 cache, et tant qu'il n'est pas arrivé à expiration, le document sera
46 servi à partir de ce dernier, plutôt qu'à partir du document source.
47 Après expiration, la copie du document dans le cache sera considérée
48 comme "expirée" et donc invalide, et une nouvelle copie devra être
49 obtenue à partir du document source.</p>
51 <p>Pour modifier les directives de contrôle du cache autres
52 que <code>max-age</code> (voir la <a
53 href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">RFC
54 2616 section 14.9</a>), vous pouvez utiliser la directive <directive
55 module="mod_headers">Header</directive>.</p>
57 <p>Lorsque l'en-tête <code>Expires</code> est déjà présent dans la
58 réponse générée par le serveur, par exemple s'il a été créé par un
59 script CGI ou un serveur original via un serveur mandataire, ce
60 module n'ajoute aucun en-tête <code>Expires</code> ou
61 <code>Cache-Control</code>.</p>
64 <section id="AltSyn"><title>Autre syntaxe de définition de
66 <p>Pour une syntaxe plus lisible, on peut aussi utiliser les
68 module="mod_expires">ExpiresDefault</directive> et <directive
69 module="mod_expires">ExpiresByType</directive> comme suit :</p>
71 <highlight language="config">
72 ExpiresDefault "<var>base</var> [plus <var>num</var> <var>type</var>] [<var>num</var> <var>type</var>] ..."
73 ExpiresByType type/encoding "<var>base</var> [plus <var>num</var> <var>type</var>] [<var>num</var> <var>type</var>] ..."
76 <p>où <var>base</var> peut être :</p>
79 <li><code>access</code></li>
81 <li><code>now</code> (équivalent à
82 '<code>access</code>')</li>
84 <li><code>modification</code></li>
87 <p>Le mot-clé <code>plus</code> est optionnel. <var>num</var> doit
88 correspondre à une valeur entière [compatible avec
89 <code>atoi()</code>], et <var>type</var> peut être choisi parmi :</p>
92 <li><code>years</code></li>
93 <li><code>months</code></li>
94 <li><code>weeks</code></li>
95 <li><code>days</code></li>
96 <li><code>hours</code></li>
97 <li><code>minutes</code></li>
98 <li><code>seconds</code></li>
101 <p>Par exemple, pour faire expirer par défaut les documents 1 mois
102 après leur accès, on peut utiliser une des directives suivantes :</p>
103 <highlight language="config">
104 ExpiresDefault "access plus 1 month"
105 ExpiresDefault "access plus 4 weeks"
106 ExpiresDefault "access plus 30 days"
110 <p>La date d'expiration peut être définie plus précisément en
111 ajoutant plusieurs clauses '<var>num</var> <var>type</var>' :</p>
113 <highlight language="config">
114 ExpiresByType text/html "access plus 1 month 15 days 2 hours"
115 ExpiresByType image/gif "modification plus 5 hours 3 minutes"
118 <p>Notez que si vous utilisez une configuration basée sur la date de
119 modification, l'en-tête Expires ne sera pas ajouté à un contenu qui
120 ne provient pas directement d'un fichier sur disque ; et ceci tout
121 simplement parce que ce type de contenu ne possède pas de date de
126 <name>ExpiresActive</name>
127 <description>Active la génération d'en-têtes
128 <code>Expires</code></description>
129 <syntax>ExpiresActive On|Off</syntax>
130 <default>ExpiresActive Off</default>
131 <contextlist><context>server config</context>
132 <context>virtual host</context><context>directory</context>
133 <context>.htaccess</context></contextlist>
134 <override>Indexes</override>
137 <p>Cette directive permet d'activer ou de désactiver la génération
138 des en-têtes <code>Expires</code> et <code>Cache-Control</code> pour
139 les documents concernés ; en d'autres termes, si cette directive se
140 trouve dans un fichier <code>.htaccess</code>, par exemple, elle ne
141 s'applique qu'aux documents générés à partir du répertoire
142 considéré. Si elle est définie à <code>Off</code>, les en-têtes ne
143 seront générés pour aucun document du domaine considéré (sauf
144 surcharge de la configuration à un niveau inférieur, comme un
145 fichier <code>.htaccess</code> qui l'emporterait sur le fichier de
146 configuration du serveur). Si elle est définie à <code>On</code>,
147 les en-têtes seront ajoutés aux documents servis en fonction des
148 critères définis par les directives <directive
149 module="mod_expires">ExpiresByType</directive> et <directive
150 module="mod_expires">ExpiresDefault</directive> (<em>voir plus
153 <p>Notez que cette directive ne permet pas de garantir qu'un en-tête
154 <code>Expires</code> ou <code>Cache-Control</code> sera généré. Si
155 les critères ne sont pas respectés, aucun en-tête ne sera généré, et
156 la directive produira le même effet que si elle n'avait pas été
162 <name>ExpiresByType</name>
163 <description>Définition de la valeur de l'en-tête <code>Expires</code>
164 en fonction du type MIME</description>
165 <syntax>ExpiresByType <var>type MIME</var>
166 <var><code>secondes</var></syntax>
167 <contextlist><context>server config</context><context>virtual host</context>
168 <context>directory</context><context>.htaccess</context></contextlist>
169 <override>Indexes</override>
172 <p>Cette directive permet de définir la valeur de l'en-tête
173 <code>Expires</code> et de la directive <code>max-age</code> de
174 l'en-tête <code>Cache-Control</code> générés pour les documents du
175 type MIME spécifié (par exemple, <code>text/html</code>). Le second
176 argument définit le nombre de secondes qui seront ajoutées à un
177 temps de base pour calculer la date d'expiration.
178 <code>Cache-Control: max-age</code> se calcule en soustrayant la
179 date de la requête de la date d'expiration et s'exprime en
182 <p>Le champ <code><var><code></var></code> permet de spécifier
183 quel temps doit être utilisé comme temps de base; <code>M</code>
184 signifie que c'est la date
185 de dernière modification du fichier qui doit être utilisée comme
186 temps de base, alors que <code>A</code> signifie que c'est le moment
187 où le client a accédé au document qui doit être utilisé comme temps
190 <p>La différence d'effet est subtile. Si on utilise <code>M</code>,
191 toutes les copies existantes du document dans tous les caches
192 expireront au même moment, ce qui peut convenir par exemple pour une
193 notice hebdomadaire qui correspond toujours à la même URL. Si on
194 utilise <code>A</code>, la date d'expiration sera différente pour
195 chaque client, ce qui peut convenir pour des fichiers d'images qui
196 ne changent pas très souvent, et en particulier pour un ensemble de
197 documents en relation qui se réfèrent tous aux mêmes images (ces
198 images sont alors accédées de manière répétitive dans un intervalle
199 de temps assez court).</p>
201 <example><title>Exemple :</title>
202 <highlight language="config">
203 # active la génération des en-têtes Expires
205 # les images GIF expirent au bout d'un mois dans le cache du
207 ExpiresByType image/gif A2592000
208 # les documents HTML restent valables une semaine après leur date
209 # de dernière modification
210 ExpiresByType text/html M604800
214 <p>Notez que cette directive ne produit d'effet que si
215 <code>ExpiresActive On</code> a été spécifié. Elle l'emporte, mais
216 <em>seulement</em> pour le type MIME spécifié, sur toute date
217 d'expiration définie par la directive <directive
218 module="mod_expires">ExpiresDefault</directive>.</p>
220 <p>Vous pouvez aussi définir le mode de calcul de la date
221 d'expiration en utilisant une <a href="#AltSyn">syntaxe
222 alternative</a>, comme décrit plus haut dans ce document.</p>
227 <name>ExpiresDefault</name>
228 <description>Mode de calcul par défaut de la date
229 d'expiration</description>
230 <syntax>ExpiresDefault <var><code>secondes</var></syntax>
231 <contextlist><context>server config</context><context>virtual host</context>
232 <context>directory</context><context>.htaccess</context></contextlist>
233 <override>Indexes</override>
236 <p>Cette directive permet de définir le mode de calcul par défaut de
237 la date d'expiration pour tous les documents du domaine considéré.
238 Elle peut être annulée pour certains types de documents par la
240 module="mod_expires">ExpiresByType</directive>. Voir la description
241 de cette dernière directive pour plus de détails à propos de la
242 syntaxe de l'argument, ainsi que la description de la <a
243 href="#AltSyn">syntaxe alternative</a>.</p>