<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "/style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="/style/manual.fr.xsl"?>
<!-- English Revision : 1330988 -->
<!-- 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_expires.xml.meta">
<name>mod_expires</name>
<description>G&eacute;n&eacute;ration des en-t&ecirc;tes HTTP <code>Expires</code> et
<code>Cache-Control</code> en fonction de crit&egrave;res sp&eacute;cifi&eacute;s par
l'utilisateur</description>
<status>Extension</status>
<sourcefile>mod_expires.c</sourcefile>
<identifier>expires_module</identifier>
<summary>
<p>Ce module permet de contr&ocirc;ler la d&eacute;finition de l'en-t&ecirc;te HTTP
<code>Expires</code> et la directive <code>max-age</code> de
l'en-t&ecirc;te HTTP <code>Cache-Control</code> dans les r&eacute;ponses du
serveur. La date d'expiration peut &ecirc;tre d&eacute;finie soit par rapport &agrave;
la date de derni&egrave;re modification du fichier source, soit
par rapport &agrave; l'heure d'acc&egrave;s du client.</p>
<p>Ces en-t&ecirc;tes HTTP permettent d'informer le client quant &agrave; la
validit&eacute; et &agrave; la persistence du document. S'il est pr&eacute;sent dans le
cache, et tant qu'il n'est pas arriv&eacute; &agrave; expiration, le document sera
servi &agrave; partir de ce dernier, plut&ocirc;t qu'&agrave; partir du document source.
Apr&egrave;s expiration, la copie du document dans le cache sera consid&eacute;r&eacute;e
comme "expir&eacute;e" et donc invalide, et une nouvelle copie devra &ecirc;tre
obtenue &agrave; partir du document source.</p>
<p>Pour modifier les directives de contr&ocirc;le du cache autres
que <code>max-age</code> (voir la <a
href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">RFC
2616 section 14.9</a>), vous pouvez utiliser la directive <directive
module="mod_headers">Header</directive>.</p>
<p>Lorsque l'en-t&ecirc;te <code>Expires</code> est d&eacute;j&agrave; pr&eacute;sent dans la
r&eacute;ponse g&eacute;n&eacute;r&eacute;e par le serveur, par exemple s'il a &eacute;t&eacute; cr&eacute;&eacute; par un
script CGI ou un serveur original via un serveur mandataire, ce
module n'ajoute aucun en-t&ecirc;te <code>Expires</code> ou
<code>Cache-Control</code>.</p>
</summary>
<section id="AltSyn"><title>Autre syntaxe de d&eacute;finition de
l'intervalle</title>
<p>Pour une syntaxe plus lisible, on peut aussi utiliser les
directives <directive
module="mod_expires">ExpiresDefault</directive> et <directive
module="mod_expires">ExpiresByType</directive> comme suit :</p>
<highlight language="config">
ExpiresDefault "<var>base</var> [plus <var>num</var> <var>type</var>] [<var>num</var> <var>type</var>] ..."
ExpiresByType type/encoding "<var>base</var> [plus <var>num</var> <var>type</var>] [<var>num</var> <var>type</var>] ..."
</highlight>
<p>o&ugrave; <var>base</var> peut &ecirc;tre :</p>
<ul>
<li><code>access</code></li>
<li><code>now</code> (&eacute;quivalent &agrave;
'<code>access</code>')</li>
<li><code>modification</code></li>
</ul>
<p>Le mot-cl&eacute; <code>plus</code> est optionnel. <var>num</var> doit
correspondre &agrave; une valeur enti&egrave;re [compatible avec
<code>atoi()</code>], et <var>type</var> peut &ecirc;tre choisi parmi :</p>
<ul>
<li><code>years</code></li>
<li><code>months</code></li>
<li><code>weeks</code></li>
<li><code>days</code></li>
<li><code>hours</code></li>
<li><code>minutes</code></li>
<li><code>seconds</code></li>
</ul>
<p>Par exemple, pour faire expirer par d&eacute;faut les documents 1 mois
apr&egrave;s leur acc&egrave;s, on peut utiliser une des directives suivantes :</p>
<highlight language="config">
ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
</highlight>
<p>La date d'expiration peut &ecirc;tre d&eacute;finie plus pr&eacute;cis&eacute;ment en
ajoutant plusieurs clauses '<var>num</var> <var>type</var>' :</p>
<highlight language="config">
ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3 minutes"
</highlight>
<p>Notez que si vous utilisez une configuration bas&eacute;e sur la date de
modification, l'en-t&ecirc;te Expires ne sera pas ajout&eacute; &agrave; un contenu qui
ne provient pas directement d'un fichier sur disque ; et ceci tout
simplement parce que ce type de contenu ne poss&egrave;de pas de date de
modification.</p>
</section>
<directivesynopsis>
<name>ExpiresActive</name>
<description>Active la g&eacute;n&eacute;ration d'en-t&ecirc;tes
<code>Expires</code></description>
<syntax>ExpiresActive On|Off</syntax>
<default>ExpiresActive Off</default>
<contextlist><context>server config</context>
<context>virtual host</context><context>directory</context>
<context>.htaccess</context></contextlist>
<override>Indexes</override>
<usage>
<p>Cette directive permet d'activer ou de d&eacute;sactiver la g&eacute;n&eacute;ration
des en-t&ecirc;tes <code>Expires</code> et <code>Cache-Control</code> pour
les documents concern&eacute;s ; en d'autres termes, si cette directive se
trouve dans un fichier <code>.htaccess</code>, par exemple, elle ne
s'applique qu'aux documents g&eacute;n&eacute;r&eacute;s &agrave; partir du r&eacute;pertoire
consid&eacute;r&eacute;. Si elle est d&eacute;finie &agrave; <code>Off</code>, les en-t&ecirc;tes ne
seront g&eacute;n&eacute;r&eacute;s pour aucun document du domaine consid&eacute;r&eacute; (sauf
surcharge de la configuration &agrave; un niveau inf&eacute;rieur, comme un
fichier <code>.htaccess</code> qui l'emporterait sur le fichier de
configuration du serveur). Si elle est d&eacute;finie &agrave; <code>On</code>,
les en-t&ecirc;tes seront ajout&eacute;s aux documents servis en fonction des
crit&egrave;res d&eacute;finis par les directives <directive
module="mod_expires">ExpiresByType</directive> et <directive
module="mod_expires">ExpiresDefault</directive> (<em>voir plus
loin</em>).</p>
<p>Notez que cette directive ne permet pas de garantir qu'un en-t&ecirc;te
<code>Expires</code> ou <code>Cache-Control</code> sera g&eacute;n&eacute;r&eacute;. Si
les crit&egrave;res ne sont pas respect&eacute;s, aucun en-t&ecirc;te ne sera g&eacute;n&eacute;r&eacute;, et
la directive produira le m&ecirc;me effet que si elle n'avait pas &eacute;t&eacute;
d&eacute;finie.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ExpiresByType</name>
<description>D&eacute;finition de la valeur de l'en-t&ecirc;te <code>Expires</code>
en fonction du type MIME</description>
<syntax>ExpiresByType <var>type MIME</var>
<var>&lt;code&gt;secondes</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>Indexes</override>
<usage>
<p>Cette directive permet de d&eacute;finir la valeur de l'en-t&ecirc;te
<code>Expires</code> et de la directive <code>max-age</code> de
l'en-t&ecirc;te <code>Cache-Control</code> g&eacute;n&eacute;r&eacute;s pour les documents du
type MIME sp&eacute;cifi&eacute; (par exemple, <code>text/html</code>). Le second
argument d&eacute;finit le nombre de secondes qui seront ajout&eacute;es &agrave; un
temps de base pour calculer la date d'expiration.
<code>Cache-Control: max-age</code> se calcule en soustrayant la
date de la requ&ecirc;te de la date d'expiration et s'exprime en
secondes.</p>
<p>Le champ <code><var>&lt;code&gt;</var></code> permet de sp&eacute;cifier
quel temps doit &ecirc;tre utilis&eacute; comme temps de base; <code>M</code>
signifie que c'est la date
de derni&egrave;re modification du fichier qui doit &ecirc;tre utilis&eacute;e comme
temps de base, alors que <code>A</code> signifie que c'est le moment
o&ugrave; le client a acc&eacute;d&eacute; au document qui doit &ecirc;tre utilis&eacute; comme temps
de base.</p>
<p>La diff&eacute;rence d'effet est subtile. Si on utilise <code>M</code>,
toutes les copies existantes du document dans tous les caches
expireront au m&ecirc;me moment, ce qui peut convenir par exemple pour une
notice hebdomadaire qui correspond toujours &agrave; la m&ecirc;me URL. Si on
utilise <code>A</code>, la date d'expiration sera diff&eacute;rente pour
chaque client, ce qui peut convenir pour des fichiers d'images qui
ne changent pas tr&egrave;s souvent, et en particulier pour un ensemble de
documents en relation qui se r&eacute;f&egrave;rent tous aux m&ecirc;mes images (ces
images sont alors acc&eacute;d&eacute;es de mani&egrave;re r&eacute;p&eacute;titive dans un intervalle
de temps assez court).</p>
<example><title>Exemple :</title>
<highlight language="config">
# active la g&eacute;n&eacute;ration des en-t&ecirc;tes Expires
ExpiresActive On
# les images GIF expirent au bout d'un mois dans le cache du
# client
ExpiresByType image/gif A2592000
# les documents HTML restent valables une semaine apr&egrave;s leur date
# de derni&egrave;re modification
ExpiresByType text/html M604800
</highlight>
</example>
<p>Notez que cette directive ne produit d'effet que si
<code>ExpiresActive On</code> a &eacute;t&eacute; sp&eacute;cifi&eacute;. Elle l'emporte, mais
<em>seulement</em> pour le type MIME sp&eacute;cifi&eacute;, sur toute date
d'expiration d&eacute;finie par la directive <directive
module="mod_expires">ExpiresDefault</directive>.</p>
<p>Vous pouvez aussi d&eacute;finir le mode de calcul de la date
d'expiration en utilisant une <a href="#AltSyn">syntaxe
alternative</a>, comme d&eacute;crit plus haut dans ce document.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ExpiresDefault</name>
<description>Mode de calcul par d&eacute;faut de la date
d'expiration</description>
<syntax>ExpiresDefault <var>&lt;code&gt;secondes</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>Indexes</override>
<usage>
<p>Cette directive permet de d&eacute;finir le mode de calcul par d&eacute;faut de
la date d'expiration pour tous les documents du domaine consid&eacute;r&eacute;.
Elle peut &ecirc;tre annul&eacute;e pour certains types de documents par la
directive <directive
module="mod_expires">ExpiresByType</directive>. Voir la description
de cette derni&egrave;re directive pour plus de d&eacute;tails &agrave; propos de la
syntaxe de l'argument, ainsi que la description de la <a
href="#AltSyn">syntaxe alternative</a>.</p>
</usage>
</directivesynopsis>
</modulesynopsis>