blob: 3de156efc8bf6f103a9733055c196a06b397b8d7 [file]
<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>mod_cache - Serveur HTTP Apache Version 2.5</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet">
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size">
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../style/css/prettify.css">
<script src="../style/scripts/prettify.min.js">
</script>
<link href="../images/favicon.png" rel="shortcut icon"></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
<p class="apache">Serveur HTTP Apache Version 2.5</p>
<img alt="" src="../images/feather.png"></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div>
<div id="path">
<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_cache</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_cache.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_cache.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_cache.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_cache.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Filtre de mise en cache HTTP conforme &agrave; la RFC 2616</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur&nbsp;de&nbsp;Module:</a></th><td>cache_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier&nbsp;Source:</a></th><td>mod_cache.c</td></tr></table>
<h3>Sommaire</h3>
<div class="warning">Ce module doit &ecirc;tre utilis&eacute; avec pr&eacute;cautions
car lorsque la directive <code class="directive"><a href="#cachequickhandler">CacheQuickHandler</a></code> est d&eacute;finie &agrave; sa
valeur par d&eacute;faut <strong>on</strong>, les directives <code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code> and <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> sont court-circuit&eacute;es. Vous
ne devez donc pas activer la gestion rapide de la mise en cache pour
un contenu auquel vous souhaitez limiter l'acc&egrave;s en fonction du nom
d'h&ocirc;te du client, de l'adresse IP ou d'une variable
d'environnement.</div>
<p><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> impl&eacute;mente un <strong>filtre de mise
en cache de contenu HTTP</strong> conforme &agrave; la <a href="https://www.rfc-editor.org/rfc/rfc2616">RFC 2616</a>, avec
support de la mise en cache des r&eacute;ponses dont le contenu a &eacute;t&eacute;
n&eacute;goci&eacute; et comportant l'en-t&ecirc;te Vary.</p>
<p>La mise en cache conforme &agrave; la RFC 2616 fournit un m&eacute;canisme
permettant de v&eacute;rifier si un contenu expir&eacute; ou d&eacute;pass&eacute; est encore &agrave;
jour, et peut apporter un gain de performances significatif si le
serveur original supporte les <strong>requ&ecirc;tes
conditionnelles</strong> en prenant en compte l'en-t&ecirc;te de requ&ecirc;te
HTTP If-None-Match (<a href="https://www.rfc-editor.org/rfc/rfc2616#section-14.26">RFC 2616</a>).
Le contenu n'est ainsi r&eacute;g&eacute;n&eacute;r&eacute; que lorsqu'il a &eacute;t&eacute; modifi&eacute;, et non
lorsqu'il a expir&eacute;.</p>
<p>En tant que filtre, <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> peut &ecirc;tre plac&eacute;
en face d'un contenu issu de tout gestionnaire, y compris
<strong>des fichiers &agrave; acc&egrave;s s&eacute;quentiel</strong> (servis depuis un
disque lent mis en
cache sur un gros disque), la sortie d'un <strong>script
CGI</strong> ou d'un <strong>g&eacute;n&eacute;rateur de contenu
dynamique</strong>, ou du contenu <strong>mandat&eacute; depuis un autre
serveur</strong>.</p>
<p>Dans la configuration par d&eacute;faut, <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>
place le filtre de mise en cache aussi loin que possible dans la
pile de filtres, utilisant le <strong>gestionnaire rapide</strong>
pour court-circuiter tout traitement par requ&ecirc;te lors de l'envoi du
contenu au client. Dans ce mode op&eacute;ratoire,
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> peut &ecirc;tre consid&eacute;r&eacute; comme un serveur
mandataire avec cache fix&eacute; en t&ecirc;te du serveur web, alors qu'il
s'ex&eacute;cute dans ce m&ecirc;me serveur web.</p>
<p>Lorsque le gestionnaire rapide est d&eacute;sactiv&eacute; via la directive
<code class="directive"><a href="#cachequickhandler">CacheQuickHandler</a></code>, il
devient possible d'ins&eacute;rer le filtre <strong>CACHE</strong> &agrave; un
point de la pile de filtres choisi par l'administrateur. Ceci permet
de mettre en cache un contenu avant que celui-ci ne soit
personnalis&eacute; par le filtre <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>, ou
&eacute;ventuellement compress&eacute; par le filtre <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code>.</p>
<p>Dans le mode de fonctionnement normal, <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>
peut &ecirc;tre contr&ocirc;l&eacute; par les en-t&ecirc;tes Cache-Control (<a href="https://www.rfc-editor.org/rfc/rfc2616#section-14.9">RFC 2616</a>)
et Pragma (<a href="https://www.rfc-editor.org/rfc/rfc2616#section-14.32">RFC 2616</a>)
envoy&eacute;s par un client dans une requ&ecirc;te, ou par un serveur dans une
r&eacute;ponse. Dans des circonstances exceptionnelles,
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> peut cependant &ecirc;tre configur&eacute; pour
outrepasser ces en-t&ecirc;tes et forcer un comportement sp&eacute;cifique au
site, bien qu'un tel comportement sera limit&eacute; &agrave; ce cache seulement,
et n'affectera pas les op&eacute;rations des autres caches qui peuvent
s'ins&eacute;rer entre le client et le serveur, et ce type de configuration
ne doit donc &ecirc;tre utiliser qu'en cas de n&eacute;cessit&eacute; absolue.</p>
<p>La RFC 2616 permet au cache de renvoyer des donn&eacute;es p&eacute;rim&eacute;es pendant que
l'entr&eacute;e p&eacute;rim&eacute;e correspondante est mise &agrave; jour depuis le serveur original,
et <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> supporte cette fonctionnalit&eacute; lorsque la
directive <code class="directive"><a href="#cachelock">CacheLock</a></code> est configur&eacute;e
en cons&eacute;quence. De telles r&eacute;ponses comportent un en-t&ecirc;te HTTP Warning (<a href="https://www.rfc-editor.org/rfc/rfc2616#section-14.46">RFC 2616</a>) contenant un code de r&eacute;ponse 110. La RFC 2616
permet aussi au cache de renvoyer des donn&eacute;es p&eacute;rim&eacute;es lorsque la tentative
de mise &agrave; jour des donn&eacute;es p&eacute;rim&eacute;es renvoie une erreur 500 ou sup&eacute;rieure, et
cette fonctionnalit&eacute; est support&eacute;e par d&eacute;faut par
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>. De telles r&eacute;ponses comportent un en-t&ecirc;te HTTP
Warning (<a href="https://www.rfc-editor.org/rfc/rfc2616#section-14.46">RFC 2616</a>) contenant un code de r&eacute;ponse
111.</p>
<p><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> requiert les services d'un ou
plusieurs modules de gestion de stockage. La distribution Apache de base
inclut les modules de gestion de stockage suivants :</p>
<dl>
<dt><code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code></dt>
<dd>impl&eacute;mente un gestionnaire de stockage sur disque. Les en-t&ecirc;tes
et corps sont stock&eacute;s s&eacute;par&eacute;ment sur le disque dans une structure de
r&eacute;pertoires bas&eacute;e sur le condens&eacute; md5 de l'URL mise en cache.
Plusieurs r&eacute;ponses &agrave; contenu n&eacute;goci&eacute; peuvent &ecirc;tre stock&eacute;es en m&ecirc;me
temps, mais la mise en cache de contenus partiels n'est pas
support&eacute;e par ce module. L'utilitaire
<code class="program"><a href="../programs/htcacheclean.html">htcacheclean</a></code> permet de lister et de supprimer les
URLs mises en cache, et de maintenir le cache en de&ccedil;&agrave; de
certaines limites de taille et de nombre d'inodes.</dd>
<dt><code class="module"><a href="../mod/mod_cache_socache.html">mod_cache_socache</a></code></dt>
<dd>Impl&eacute;mente un gestionnaire de stockage bas&eacute; sur un cache d'objets
partag&eacute;s. Les en-t&ecirc;tes et corps sont stock&eacute;s ensemble sous une seule
cl&eacute; bas&eacute;e sur l'URL de la r&eacute;ponse mise en cache. Des r&eacute;ponses &agrave;
contenus multiples n&eacute;goci&eacute;s peuvent &ecirc;tre stock&eacute;es simultan&eacute;ment, mais
ce module ne supporte pas la mise en cache de contenus partiels.</dd>
</dl>
<p>Pour de plus amples d&eacute;tails, une description, et des exemples,
reportez-vous au <a href="../caching.html">Guide de la mise en
cache</a>.</p>
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif"> <a href="#related">Modules apparent&eacute;s et directives</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sampleconf">Exemple de configuration</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#thunderingherd">Eviter une temp&ecirc;te de requ&ecirc;te</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#finecontrol">Contr&ocirc;le fin via le filtre CACHE</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#status">Etat du cache et journalisation</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif"> <a href="#cachedefaultexpire">CacheDefaultExpire</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachedetailheader">CacheDetailHeader</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachedisable">CacheDisable</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cacheenable">CacheEnable</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cacheheader">CacheHeader</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cacheignoreheaders">CacheIgnoreHeaders</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cacheignorenolastmod">CacheIgnoreNoLastMod</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cacheignorequerystring">CacheIgnoreQueryString</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cacheignoreurlsessionidentifiers">CacheIgnoreURLSessionIdentifiers</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachekeybaseurl">CacheKeyBaseURL</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachelastmodifiedfactor">CacheLastModifiedFactor</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachelock">CacheLock</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachelockmaxage">CacheLockMaxAge</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachelockpath">CacheLockPath</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachemaxexpire">CacheMaxExpire</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cacheminexpire">CacheMinExpire</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachequickhandler">CacheQuickHandler</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachestaleonerror">CacheStaleOnError</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachestoreexpired">CacheStoreExpired</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachestorenostore">CacheStoreNoStore</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#cachestoreprivate">CacheStorePrivate</a></li>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_cache">Probl&egrave;mes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_cache">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><a href="../caching.html">Guide de la mise en
cache</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="related">Modules apparent&eacute;s et directives <a title="Lien permanent" href="#related" class="permalink">&para;</a></h2>
<table class="related"><tr><th>Modules Apparent&eacute;s</th><th>Directives Apparent&eacute;es</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_cache_socache.html">mod_cache_socache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_cache_disk.html#cacheroot">CacheRoot</a></code></li><li><code class="directive"><a href="../mod/mod_cache_disk.html#cachedirlevels">CacheDirLevels</a></code></li><li><code class="directive"><a href="../mod/mod_cache_disk.html#cachedirlength">CacheDirLength</a></code></li><li><code class="directive"><a href="../mod/mod_cache_disk.html#cacheminfilesize">CacheMinFileSize</a></code></li><li><code class="directive"><a href="../mod/mod_cache_disk.html#cachemaxfilesize">CacheMaxFileSize</a></code></li><li><code class="directive"><a href="../mod/mod_cache_socache.html#cachesocache">CacheSocache</a></code></li><li><code class="directive"><a href="../mod/mod_cache_socache.html#cachesocachemaxtime">CacheSocacheMaxTime</a></code></li><li><code class="directive"><a href="../mod/mod_cache_socache.html#cachesocachemintime">CacheSocacheMinTime</a></code></li><li><code class="directive"><a href="../mod/mod_cache_socache.html#cachesocachemaxsize">CacheSocacheMaxSize</a></code></li><li><code class="directive"><a href="../mod/mod_cache_socache.html#cachesocachereadsize">CacheSocacheReadSize</a></code></li><li><code class="directive"><a href="../mod/mod_cache_socache.html#cachesocachereadtime">CacheSocacheReadTime</a></code></li></ul></td></tr></table>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="sampleconf">Exemple de configuration <a title="Lien permanent" href="#sampleconf" class="permalink">&para;</a></h2>
<div class="example"><h3>Extrait de httpd.conf</h3><pre class="prettyprint lang-config">#
# Exemple de configuration du cache
#
LoadModule cache_module modules/mod_cache.so
&lt;IfModule mod_cache.c&gt;
LoadModule cache_disk_module modules/mod_cache_disk.so
&lt;IfModule mod_cache_disk.c&gt;
CacheRoot c:/cacheroot
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
&lt;/IfModule&gt;
# Lorsqu'on sert de mandataire, on ne met pas en cache la liste
# des mises &agrave; jour de s&eacute;curit&eacute;
CacheDisable http://security.update.server/update-list/
&lt;/IfModule&gt;</pre>
</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="thunderingherd">Eviter une temp&ecirc;te de requ&ecirc;te <a title="Lien permanent" href="#thunderingherd" class="permalink">&para;</a></h2>
<p>Lorsqu'une entr&eacute;e du cache est p&eacute;rim&eacute;e, <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>
soumet une requ&ecirc;te conditionnelle au processus d'arri&egrave;re-plan, qui est
cens&eacute; confirmer la validit&eacute; de l'entr&eacute;e du cache, ou dans la n&eacute;gative
envoyer une entr&eacute;e mise &agrave; jour.</p>
<p>Un court mais non n&eacute;gligeable laps de temps existe entre le moment
o&ugrave; l'entr&eacute;e du cache est p&eacute;rim&eacute;e, et le moment o&ugrave; elle est mise &agrave;
jour. Sur un serveur fortement charg&eacute;, un certain nombre de requ&ecirc;tes
peut arriver pendant ce laps de temps, et provoquer une
<strong>temp&ecirc;te</strong> de requ&ecirc;tes susceptibles de saturer le
processus d'arri&egrave;re-plan de mani&egrave;re soudaine et impr&eacute;dictible.</p>
<p>Pour contenir cette temp&ecirc;te, on peut utiliser la directive <code class="directive"><a href="#cachelock">CacheLock</a></code> afin de d&eacute;finir un r&eacute;pertoire o&ugrave;
seront cr&eacute;&eacute;s <strong>&agrave; la vol&eacute;e</strong> des verrous pour les URLs. Ces
verrous sont utilis&eacute;s comme autant d'<strong>indications</strong> par les
autres requ&ecirc;tes, soit pour emp&ecirc;cher une tentative de mise en cache (un autre
processus est en train de r&eacute;cup&eacute;rer l'entit&eacute;), soit pour indiquer qu'une
entr&eacute;e p&eacute;rim&eacute;e est en cours de mise &agrave; jour (pendant ce temps, c'est le contenu
p&eacute;rim&eacute; qui sera renvoy&eacute;).
</p>
<h3>Mise en cache initiale d'une entr&eacute;e</h3>
<p>Lorsqu'une entit&eacute; est mise en cache pour la premi&egrave;re fois, un
verrou est cr&eacute;&eacute; pour cette entit&eacute; jusqu'&agrave; ce que la r&eacute;ponse ait &eacute;t&eacute;
enti&egrave;rement mise en cache. Pendant la dur&eacute;e de vie du verrou, le
cache va emp&ecirc;cher une seconde tentative de mise en cache de la m&ecirc;me
entit&eacute;. Bien que cela ne suffise pas &agrave; contenir la temp&ecirc;te de
requ&ecirc;tes, toute tentative de mettre en cache la m&ecirc;me entit&eacute;
plusieurs fois simultan&eacute;ment est stopp&eacute;e.
</p>
<h3>Mise &agrave; jour d'une entr&eacute;e p&eacute;rim&eacute;e</h3>
<p>Lorsqu'une entr&eacute;e atteint la limite de sa dur&eacute;e de vie, et
devient par cons&eacute;quent p&eacute;rim&eacute;e, un verrou est cr&eacute;&eacute; pour cette entit&eacute;
jusqu'&agrave; ce que la r&eacute;ponse ait &eacute;t&eacute; soit confirm&eacute;e comme encore
valide, soit remplac&eacute;e par le processus d'arri&egrave;re-plan. Pendant la
dur&eacute;e de vie du verrou, une seconde requ&ecirc;te entrante va provoquer le
renvoi de la donn&eacute;e p&eacute;rim&eacute;e, et la temp&ecirc;te de requ&ecirc;tes sera
contenue.</p>
<h3>Verrous et en-t&ecirc;te Cache-Control: no-cache</h3>
<p>Les verrous ne sont utilis&eacute;s <strong>qu'&agrave; titre
indicatif</strong> pour enjoindre le cache &agrave; &ecirc;tre plus coop&eacute;ratif
avec les serveurs d'arri&egrave;re-plan, et il est possible de passer outre
si n&eacute;cessaire. Si le client envoie une requ&ecirc;te contenant un en-t&ecirc;te
Cache-Control imposant un nouveau t&eacute;l&eacute;chargement de l'entit&eacute;, tout
verrou &eacute;ventuel sera ignor&eacute;, la requ&ecirc;te du client sera honor&eacute;e
imm&eacute;diatement, et l'entr&eacute;e du cache mise &agrave; jour.</p>
<p>Comme m&eacute;canisme de s&eacute;curit&eacute; suppl&eacute;mentaire, la dur&eacute;e de vie maximale des
verrous est configurable. Lorsque cette limite est atteinte, le verrou est
supprim&eacute; et une autre requ&ecirc;te peut alors en cr&eacute;er un nouveau. Cette dur&eacute;e de
vie peut &ecirc;tre d&eacute;finie via la directive <code class="directive"><a href="#cachelockmaxage">CacheLockMaxAge</a></code>, et sa valeur par d&eacute;faut est
de 5 secondes.
</p>
<h3>Exemple de configuration</h3>
<div class="example"><h3>Activation du verrouillage du cache</h3><pre class="prettyprint lang-config">#
# Active le verrouillage du cache
#
&lt;IfModule mod_cache.c&gt;
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
&lt;/IfModule&gt;</pre>
</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="finecontrol">Contr&ocirc;le fin via le filtre CACHE <a title="Lien permanent" href="#finecontrol" class="permalink">&para;</a></h2>
<p>Dans son mode de fonctionnement par d&eacute;faut, le cache s'ex&eacute;cute sous
la forme d'un gestionnaire rapide, court-circuitant la majorit&eacute; des
traitements du serveur et fournissant ainsi une mise en cache
poss&eacute;dant les plus hautes performances disponibles.</p>
<p>Dans ce mode, le cache <strong>s'incruste</strong> devant le
serveur, comme si un mandataire de mise en cache ind&eacute;pendant RFC 2616
&eacute;tait plac&eacute; devant ce dernier.</p>
<p>Bien que que ce mode offre les meilleures performances, les
administrateurs peuvent souhaiter, dans certaines circonstances,
effectuer des traitements sur la requ&ecirc;te apr&egrave;s que cette derni&egrave;re ait
&eacute;t&eacute; mise en cache, comme ajouter du contenu personnalis&eacute; &agrave; la page
mise en cache, ou appliquer des restrictions d'autorisations au
contenu. Pour y parvenir, l'administrateur sera alors souvent forc&eacute; de
placer des serveurs mandataires inverses ind&eacute;pendants soit derri&egrave;re,
soit devant le serveur de mise en cache.</p>
<p>Pour r&eacute;soudre ce probl&egrave;me, la directive <code class="directive"><a href="#cachequickhandler">CacheQuickHandler</a></code> peut &ecirc;tre d&eacute;finie &agrave;
<strong>off</strong>, afin que le serveur traite toutes les phases
normalement ex&eacute;cut&eacute;es par une requ&ecirc;te non mise en cache, y compris les
phases <strong>d'authentification et d'autorisation</strong>.</p>
<p>En outre, l'administrateur peut &eacute;ventuellement sp&eacute;cifier le
<strong>point pr&eacute;cis dans la cha&icirc;ne de filtrage</strong> o&ugrave; devra
intervenir la mise en cache en ajoutant le filtre
<strong>CACHE</strong> &agrave; la cha&icirc;ne de filtrage en sortie.</p>
<p>Par exemple, pour mettre en cache le contenu avant d'appliquer une
compression &agrave; la r&eacute;ponse, placez le filtre <strong>CACHE</strong>
avant le filtre <strong>DEFLATE</strong> comme dans l'exemple suivant
:</p>
<pre class="prettyprint lang-config"># Mise en cache du contenu avant la compression optionnelle
CacheQuickHandler off
AddOutputFilterByType CACHE;DEFLATE text/plain</pre>
<p>Une autre possibilit&eacute; consiste &agrave; mettre en cache le contenu avant
l'ajout de contenu personnalis&eacute; via <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> (ou
tout autre filtre de traitement de contenu). Dans l'exemple suivant,
les mod&egrave;les contenant des balises comprises par
<code class="module"><a href="../mod/mod_include.html">mod_include</a></code> sont mis en cache avant d'&ecirc;tre
interpr&eacute;t&eacute;s :</p>
<pre class="prettyprint lang-config"># Mise en cache du contenu avant l'intervention de mod_include et
# mod_deflate
CacheQuickHandler off
AddOutputFilterByType CACHE;INCLUDES;DEFLATE text/html</pre>
<p>Vous pouvez ins&eacute;rer le filtre <strong>CACHE</strong> en tout point
de la cha&icirc;ne de filtrage. Dans l'exemple suivant, le contenu est mis
en cache apr&egrave;s avoir &eacute;t&eacute; interpr&eacute;t&eacute; par <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>,
mais avant d'&ecirc;tre trait&eacute; par <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> :</p>
<pre class="prettyprint lang-config"># Mise en cache du contenu entre les interventions de mod_include et
# mod_deflate
CacheQuickHandler off
AddOutputFilterByType INCLUDES;CACHE;DEFLATE text/html</pre>
<div class="warning"><h3>Avertissement :</h3>Si pour une raison
ou pour une autre, le point d'insertion du filtre
<strong>CACHE</strong> dans la cha&icirc;ne de filtrage est modifi&eacute;, vous
devez <strong>vider votre cache</strong> pour &ecirc;tre s&ucirc;r que les donn&eacute;es
servies soient &agrave; jour. En effet, <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> n'est pas
en mesure d'effectuer cette op&eacute;ration &agrave; votre place.</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="status">Etat du cache et journalisation <a title="Lien permanent" href="#status" class="permalink">&para;</a></h2>
<p>Lorsque <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> a d&eacute;cid&eacute; s'il devait ou non
servir une entit&eacute; depuis le cache, les raisons pr&eacute;cises de cette
d&eacute;cision sont enregistr&eacute;es dans l'environnement du sous-processus
interne &agrave; la requ&ecirc;te sous la cl&eacute; <strong>cache-status</strong>.
Cette information peut &ecirc;tre journalis&eacute;e via la directive <code class="directive"><a href="../mod/mod_log_config.html#logformat">LogFormat</a></code> comme suit :</p>
<pre class="prettyprint lang-config">LogFormat "%{cache-status}e ..."</pre>
<p>En fonction de la d&eacute;cision prise, l'information est aussi &eacute;crite
dans l'environnement du sous-processus sous une des quatre cl&eacute;s
suivantes :</p>
<dl>
<dt>cache-hit</dt><dd>Le contenu a &eacute;t&eacute; servi depuis le cache.</dd>
<dt>cache-revalidate</dt><dd>Le contenu du cache &eacute;tait p&eacute;rim&eacute;, a &eacute;t&eacute;
mis &agrave; jour avec succ&egrave;s, puis servi depuis le cache.</dd>
<dt>cache-miss</dt><dd>Le contenu n'&eacute;tait pas dans le cache et a &eacute;t&eacute;
servi directement depuis le serveur demand&eacute;.</dd>
<dt>cache-invalidate</dt><dd>L'entit&eacute; du cache est devenue invalide
suite &agrave; une requ&ecirc;te d'un type autre que GET ou HEAD.</dd>
</dl>
<p>Il est alors possible d'envisager une journalisation conditionnelle
du traitement des requ&ecirc;tes par rapport au cache comme dans l'exemple
suivant :</p>
<pre class="prettyprint lang-config">CustomLog "cached-requests.log" common env=cache-hit
CustomLog "uncached-requests.log" common env=cache-miss
CustomLog "revalidated-requests.log" common env=cache-revalidate
CustomLog "invalidated-requests.log" common env=cache-invalidate</pre>
<p>Pour les concepteurs de modules, une accroche (hook) nomm&eacute;e
<var>cache_status</var> est disponible et permet aux modules de
r&eacute;pondre aux r&eacute;sultats de la v&eacute;rification du cache ci-dessus de mani&egrave;re
personnalis&eacute;e.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachedefaultexpire">Directive <span id="CacheDefaultExpire">CacheDefaultExpire</span> <a title="Lien permanent" href="#cachedefaultexpire" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>La dur&eacute;e par d&eacute;faut de mise en cache d'un document
lorsqu'aucune date d'expiration n'a &eacute;t&eacute; sp&eacute;cifi&eacute;e.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheDefaultExpire <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheDefaultExpire 3600 (une heure)</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>La directive <code class="directive">CacheDefaultExpire</code> permet de
sp&eacute;cifier un temps par d&eacute;faut, en secondes, pendant lequel sera conserv&eacute;
dans le cache un document qui ne poss&egrave;de ni date d'expiration, ni date de
derni&egrave;re modification. La valeur de cette directive n'est <em>pas</em>
&eacute;cras&eacute;e par la valeur de la directive <code class="directive"><a href="#cachemaxexpire">CacheMaxExpire</a></code>, m&ecirc;me si cette derni&egrave;re est
utilis&eacute;e.</p>
<pre class="prettyprint lang-config">CacheDefaultExpire 86400</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachedetailheader">Directive <span id="CacheDetailHeader">CacheDetailHeader</span> <a title="Lien permanent" href="#cachedetailheader" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ajoute un en-t&ecirc;te X-Cache-Detail &agrave; la r&eacute;ponse.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheDetailHeader <var>on|off</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheDetailHeader off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible depuis la version 2.3.9 d'Apache</td></tr>
</table>
<p>Lorsque la directive <code class="directive">CacheDetailHeader</code> est d&eacute;finie &agrave; on, un
en-t&ecirc;te <strong>X-Cache-Detail</strong> est ajout&eacute; &agrave; la r&eacute;ponse et
contient les raisons pr&eacute;cises d'une d&eacute;cision d'utilisation du cache
vis &agrave; vis de cette derni&egrave;re.</p>
<p>Ceci peut s'av&eacute;rer utile au cours du d&eacute;veloppement de services
RESTful mis en cache pour obtenir des informations suppl&eacute;mentaires &agrave;
propos des d&eacute;cisions vis &agrave; vis du cache &eacute;crites dans les en-t&ecirc;tes de
la r&eacute;ponse. Il est ainsi possible de v&eacute;rifier si
<code>Cache-Control</code> et d'autres en-t&ecirc;tes ont &eacute;t&eacute; correctement
utilis&eacute;s par le service et le client.</p>
<p>Si le gestionnaire normal est utilis&eacute;, cette directive peut se
situer dans une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> ou <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>. Si c'est le gestionnaire
rapide qui est utilis&eacute;, elle doit se situer dans un contexte de
serveur principal ou de serveur virtuel, sinon elle sera ignor&eacute;e.</p>
<pre class="prettyprint lang-config"># Active l'en-t&ecirc;te X-Cache-Detail
CacheDetailHeader on</pre>
<div class="example"><p><code>
X-Cache-Detail: "conditional cache hit: entity refreshed" from localhost<br>
</code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachedisable">Directive <span id="CacheDisable">CacheDisable</span> <a title="Lien permanent" href="#cachedisable" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;sactive la mise en cache des URLs
sp&eacute;cifi&eacute;es</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheDisable <var>cha&icirc;ne-url</var> | <var>on</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<div class="note"><p>Cette directive n&rsquo;est valable que dans les sections <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> et <code class="directive"><a href="../mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code> dans des contextes de
r&eacute;pertoire. Elle ne l&rsquo;est pas dans les sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="../mod/core.html#files">&lt;Files&gt;</a></code> ou <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code>.</p></div>
<p>La directive <code class="directive">CacheDisable</code> enjoint
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> de <em>ne pas</em> mettre en cache l'URL
sp&eacute;cifi&eacute;e par <var>cha&icirc;ne URL</var>, ainsi que les URLs de niveaux
inf&eacute;rieurs.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">CacheDisable /fichiers_locaux</pre>
</div>
<p>Si la directive se trouve &agrave; l'int&eacute;rieur d'une section <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>, le chemin doit &ecirc;tre
sp&eacute;cifi&eacute; en dessous de la Location, et si le mot "on" est utilis&eacute;, la mise
en cache sera d&eacute;sactiv&eacute;e pour l'ensemble de l'arborescence concern&eacute;e par la
section Location.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">&lt;Location "/foo"&gt;
CacheDisable on
&lt;/Location&gt;</pre>
</div>
<p>Avec les versions 2.2.12 et ult&eacute;rieures, on peut d&eacute;finir la
variable d'environnement <code>no-cache</code> pour une d&eacute;finition
plus fine des ressources &agrave; mettre en cache.</p>
<h3>Voir aussi</h3>
<ul>
<li><a href="../env.html">Les variables d'environnement dans
Apache</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cacheenable">Directive <span id="CacheEnable">CacheEnable</span> <a title="Lien permanent" href="#cacheenable" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active la mise en cache des URLs sp&eacute;cifi&eacute;es en utilisant le
gestionnaire de stockage pr&eacute;cis&eacute;</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheEnable <var>type de cache</var> [<var>cha&icirc;ne
URL</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Une cha&icirc;ne URL telle que '/' s'appliquait &agrave; tout contenu
en mandat direct dans les versions 2.2 et ant&eacute;rieures.</td></tr>
</table>
<p>La directive <code class="directive">CacheEnable</code> enjoint
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> de mettre en cache l'URL pr&eacute;cis&eacute;e par <var>cha&icirc;ne
URL</var>, ainsi que les URLs de niveaux inf&eacute;rieurs. Le gestionnaire de
stockage du cache est sp&eacute;cifi&eacute; &agrave; l'aide de l'argument <var>type de
cache</var>. La directive <code class="directive">CacheEnable</code> peut &ecirc;tre
plac&eacute;e &agrave; l'int&eacute;rieur d'une section <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> ou <code class="directive"><a href="../mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code> pour indiquer que le contenu
consid&eacute;r&eacute; peut &ecirc;tre mis en cache. Si <var>type de cache</var> a pour valeur
<code>disk</code>, <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> utilisera le gestionnaire de
stockage sur disque impl&eacute;ment&eacute; par <code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code>. Pour que
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> utilise le gestionnaire de stockage bas&eacute; sur le
cache d'objets partag&eacute;s impl&eacute;ment&eacute; par <code class="module"><a href="../mod/mod_cache_socache.html">mod_cache_socache</a></code>,
sp&eacute;cifiez <code>socache</code> comme valeur du param&egrave;tre <var>type de
cache</var>.</p> <p>Si les diff&eacute;rentes directives
<code class="directive">CacheEnable</code> sp&eacute;cifient des URLs qui se recoupent
(comme dans l'exemple ci-dessous), tous les gestionnaires de stockage
possibles seront lanc&eacute;s, jusqu'au premier d'entre eux qui traitera
effectivement la requ&ecirc;te. L'ordre dans lequel les gestionnaires de stockage
sont lanc&eacute;s est d&eacute;termin&eacute; par l'ordre dans lequel apparaissent les
directives <code class="directive">CacheEnable</code> dans le fichier de
configuration. Les directives <code class="directive">CacheEnable</code> situ&eacute;es &agrave;
l'int&eacute;rieur de sections <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> ou <code class="directive"><a href="../mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code> sont trait&eacute;es avant les directives
<code class="directive">CacheEnable</code> d&eacute;finies au niveau global.</p>
<p>En fonctionnement du type serveur mandataire direct, <var>cha&icirc;ne
URL</var> doit au moins d&eacute;buter par un protocole pour lequel la mise
en cache doit &ecirc;tre activ&eacute;e.</p>
<pre class="prettyprint lang-config"># Mise en cache de contenu (gestionnaire normal seulement)
CacheQuickHandler off
&lt;Location "/foo"&gt;
CacheEnable disk
&lt;/Location&gt;
# Mise en cache via une expression rationnelle (gestionnaire normal seulement)
CacheQuickHandler off
&lt;LocationMatch "foo$"&gt;
CacheEnable disk
&lt;/LocationMatch&gt;
# Mise en cache de tous les contenus, &agrave; l'exception des URLs
# mandat&eacute;es en direct (gestionnaire normal ou rapide)
CacheEnable disk /
# Mise en cache des URLs FTP mandat&eacute;es (gestionnaire normal ou rapide)
CacheEnable disk ftp://
# Mise en cache des contenus mandat&eacute;s en direct depuis www.example.org (gestionnaire normal ou rapide)
CacheEnable disk http://www.example.org/</pre>
<p>Un nom d'h&ocirc;te commen&ccedil;ant par un caract&egrave;re <strong>"*"</strong>
correspondra &agrave; tout nom d'h&ocirc;te se terminant par le suffixe
consid&eacute;r&eacute;. Un nom d'h&ocirc;te commen&ccedil;ant par un caract&egrave;re
<strong>"."</strong> correspondra &agrave; tout nom d'h&ocirc;te contenant le
composant de nom de domaine qui suit ce caract&egrave;re.</p>
<pre class="prettyprint lang-config"># Correspond &agrave; www.example.org et fooexample.org
CacheEnable disk http://*example.org/
# Correspond &agrave; www.example.org, mais pas &agrave; fooexample.org
CacheEnable disk http://.example.org/</pre>
<p>Depuis la version 2.2.12, on peut d&eacute;finir la variable
d'environnement <code>no-cache</code> pour une d&eacute;finition plus fine
des ressources &agrave; mettre en cache.</p>
<h3>Voir aussi</h3>
<ul>
<li><a href="../env.html">Les variables d'environnement dans
Apache</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cacheheader">Directive <span id="CacheHeader">CacheHeader</span> <a title="Lien permanent" href="#cacheheader" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ajoute un en-t&ecirc;te X-Cache &agrave; la r&eacute;ponse.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheHeader <var>on|off</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheHeader off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible depuis la version 2.3.9 d'Apache</td></tr>
</table>
<p>Lorsque la directive <code class="directive">CacheHeader</code> est d&eacute;finie &agrave; on, un
en-t&ecirc;te <strong>X-Cache</strong> est ajout&eacute; &agrave; la r&eacute;ponse et contient
l'&eacute;tat du cache pour cette derni&egrave;re. Si le gestionnaire normal est
utilis&eacute;, cette directive peut se situer dans une section
<code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> ou
<code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>. Si c'est
le
gestionnaire rapide qui est utilis&eacute;, elle doit se situer dans un
contexte de serveur principal ou de serveur virtuel, sinon elle sera
ignor&eacute;e.</p>
<dl>
<dt><strong>HIT</strong></dt><dd>Le contenu &eacute;tait &agrave; jour et a &eacute;t&eacute;
servi depuis le cache.</dd>
<dt><strong>REVALIDATE</strong></dt><dd>Le contenu &eacute;tait p&eacute;rim&eacute;, a
&eacute;t&eacute; mis &agrave; jour, puis a &eacute;t&eacute; servi depuis le cache.</dd>
<dt><strong>MISS</strong></dt><dd>Le contenu n'a pas &eacute;t&eacute; servi
depuis le cache, mais directement depuis le serveur demand&eacute;.</dd>
</dl>
<pre class="prettyprint lang-config"># Active l'en-t&ecirc;te X-Cache
CacheHeader on</pre>
<pre class="prettyprint lang-config">X-Cache: HIT from localhost</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cacheignorecachecontrol">Directive <span id="CacheIgnoreCacheControl">CacheIgnoreCacheControl</span> <a title="Lien permanent" href="#cacheignorecachecontrol" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore les en-t&ecirc;tes de requ&ecirc;te enjoignant de ne pas servir
le contenu au client depuis le cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheIgnoreCacheControl On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheIgnoreCacheControl Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>Normalement, les requ&ecirc;tes contenant des en-t&ecirc;tes tels que
<code>Cache-Control: no-cache</code> ou Pragma: no-cache ne sont pas servies
depuis le cache. La directive
<code class="directive">CacheIgnoreCacheControl</code> permet de modifier ce
comportement. Avec <code class="directive">CacheIgnoreCacheControl
On</code>, le serveur tentera de servir la ressource depuis le
cache, m&ecirc;me si la requ&ecirc;te contient un en-t&ecirc;te
no-cache.</p>
<pre class="prettyprint lang-config">CacheIgnoreCacheControl On</pre>
<div class="warning"><h3>Avertissement :</h3>
Cette directive permet de servir des ressources depuis le cache,
m&ecirc;me si le client a demand&eacute; &agrave; ce qu'il n'en soit pas ainsi. Le
contenu servi est ainsi susceptible d'&ecirc;tre p&eacute;rim&eacute;.
</div>
<h3>Voir aussi</h3>
<ul>
<li><code class="directive"><a href="#cachestoreprivate">CacheStorePrivate</a></code></li>
<li><code class="directive"><a href="#cachestorenostore">CacheStoreNoStore</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cacheignoreheaders">Directive <span id="CacheIgnoreHeaders">CacheIgnoreHeaders</span> <a title="Lien permanent" href="#cacheignoreheaders" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ne pas stocker le(s) en-t&ecirc;te(s) sp&eacute;cifi&eacute;(s) dans le cache.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheIgnoreHeaders <var>en-t&ecirc;te</var> [<var>en-t&ecirc;te</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheIgnoreHeaders None</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>En accord avec la RFC 2616, les en-t&ecirc;tes HTTP hop-by-hop ne sont
pas stock&eacute;s dans le cache. Les en-t&ecirc;tes HTTP suivant sont des
en-t&ecirc;tes hop-by-hop, et en tant que tels, ne sont en <em>aucun</em>
cas stock&eacute;s dans le cache, quelle que soit la d&eacute;finition de la
directive <code class="directive">CacheIgnoreHeaders</code> :</p>
<ul>
<li><code>Connection</code></li>
<li><code>Keep-Alive</code></li>
<li><code>Proxy-Authenticate</code></li>
<li><code>Proxy-Authorization</code></li>
<li><code>TE</code></li>
<li><code>Trailers</code></li>
<li><code>Transfer-Encoding</code></li>
<li><code>Upgrade</code></li>
</ul>
<p>La directive <code class="directive">CacheIgnoreHeaders</code> permet de
sp&eacute;cifier quels en-t&ecirc;tes HTTP ne doivent pas &ecirc;tre stock&eacute;s dans le
cache. Par exemple, il peut s'av&eacute;rer pertinent dans certains cas de
ne pas stocker les cookies dans le cache.</p>
<p>La directive <code class="directive">CacheIgnoreHeaders</code> accepte
une liste d'en-t&ecirc;tes HTTP s&eacute;par&eacute;s par des espaces, qui ne doivent
pas &ecirc;tre stock&eacute;s dans le cache. Si les en-t&ecirc;tes hop-by-hop sont les
seuls &agrave; ne pas devoir &ecirc;tre stock&eacute;s dans le cache (le comportement
compatible RFC 2616), la directive
<code class="directive">CacheIgnoreHeaders</code> peut &ecirc;tre d&eacute;finie &agrave;
<code>None</code>.</p>
<div class="example"><h3>Exemple 1</h3><pre class="prettyprint lang-config">CacheIgnoreHeaders Set-Cookie</pre>
</div>
<div class="example"><h3>Exemple 2</h3><pre class="prettyprint lang-config">CacheIgnoreHeaders None</pre>
</div>
<div class="warning"><h3>Avertissement :</h3>
Si des en-t&ecirc;tes n&eacute;cessaires &agrave; la bonne gestion du cache, comme
<code>Expires</code>, ne sont pas stock&eacute;s suite &agrave; la d&eacute;finition
d'une directive <code class="directive">CacheIgnoreHeaders</code>, le
comportement de mod_cache sera impr&eacute;visible.
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cacheignorenolastmod">Directive <span id="CacheIgnoreNoLastMod">CacheIgnoreNoLastMod</span> <a title="Lien permanent" href="#cacheignorenolastmod" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore le fait qu'une r&eacute;ponse ne poss&egrave;de pas d'en-t&ecirc;te Last
Modified.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheIgnoreNoLastMod On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheIgnoreNoLastMod Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>Normalement, les documents qui ne poss&egrave;dent pas de date de derni&egrave;re
modification ne sont pas mis en cache. Dans certaines circonstances, la date
de derni&egrave;re modification est supprim&eacute;e (au cours des traitements li&eacute;s &agrave;
<code class="module"><a href="../mod/mod_include.html">mod_include</a></code> par exemple), ou n'existe tout simplement pas.
La directive <code class="directive">CacheIgnoreNoLastMod</code> permet de sp&eacute;cifier
si les documents ne poss&egrave;dant pas de date de derni&egrave;re modification doivent
&ecirc;tre mis en cache, m&ecirc;me sans date de derni&egrave;re modification. Si le document
ne poss&egrave;de ni date d'expiration, ni date de derni&egrave;re modification, la valeur
sp&eacute;cifi&eacute;e par la directive <code class="directive"><a href="#cachedefaultexpire">CacheDefaultExpire</a></code> servira &agrave; g&eacute;n&eacute;rer une date
d'expiration. </p>
<div class="note">Plus pr&eacute;cis&eacute;ment, une r&eacute;ponse 200 OK n'est mise en cache que si elle
contient au moins un des en-t&ecirc;tes <code>Last-Modified</code>,
<code>ETag</code> ou <code>Expires</code>, ou une directive
<code>Cache-Control: max-age</code> ou <code>s-maxage</code>. Cette
directive permet de s'affranchir enti&egrave;rement de cette condition pr&eacute;alable.
Si un de ces en-t&ecirc;tes est d&eacute;j&agrave; pr&eacute;sent, cette directive n'a aucun
effet.</div>
<pre class="prettyprint lang-config">CacheIgnoreNoLastMod On</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cacheignorequerystring">Directive <span id="CacheIgnoreQueryString">CacheIgnoreQueryString</span> <a title="Lien permanent" href="#cacheignorequerystring" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore la cha&icirc;ne de param&egrave;tres lors de la mise en
cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheIgnoreQueryString On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheIgnoreQueryString Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>Normalement, les requ&ecirc;tes comportant une cha&icirc;ne de param&egrave;tres
sont mises en cache s&eacute;par&eacute;ment si leurs cha&icirc;nes de param&egrave;tres
diff&egrave;rent.
En accord avec la RFC 2616/13.9, cette mise en cache n'est effectu&eacute;e
s&eacute;par&eacute;ment que si une date d'expiration est sp&eacute;cifi&eacute;e. La directive
<code class="directive">CacheIgnoreQueryString</code> permet la mise en
cache de requ&ecirc;tes m&ecirc;me si aucune date d'expiration est sp&eacute;cifi&eacute;e, et
de renvoyer une r&eacute;ponse depuis la cache m&ecirc;me si les cha&icirc;nes de
param&egrave;tres diff&egrave;rent. Du point de vue du cache, la requ&ecirc;te est
trait&eacute;e comme si elle ne poss&egrave;dait pas de cha&icirc;ne de param&egrave;tres
lorsque cette directive est activ&eacute;e.</p>
<pre class="prettyprint lang-config">CacheIgnoreQueryString On</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cacheignoreurlsessionidentifiers">Directive <span id="CacheIgnoreURLSessionIdentifiers">CacheIgnoreURLSessionIdentifiers</span> <a title="Lien permanent" href="#cacheignoreurlsessionidentifiers" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore les identifiants de session d&eacute;finis encod&eacute;s dans
l'URL lors de la mise en cache
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheIgnoreURLSessionIdentifiers <var>identifiant</var>
[<var>identifiant</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheIgnoreURLSessionIdentifiers None</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>Certaines applications encodent l'identifiant de session dans
l'URL comme dans l'exemple suivant :
</p>
<ul>
<li><code>/une-application/image.gif;jsessionid=123456789</code></li>
<li><code>/une-application/image.gif?PHPSESSIONID=12345678</code></li>
</ul>
<p>Ceci implique la mise en cache des ressources s&eacute;par&eacute;ment pour
chaque session, ce qui n'est en g&eacute;n&eacute;ral pas souhait&eacute;. La directive
<code class="directive">CacheIgnoreURLSessionIdentifiers</code> permet de
d&eacute;finir une liste d'identifiants qui seront supprim&eacute;s de la cl&eacute;
utilis&eacute;e pour identifier une entit&eacute; dans le cache, de fa&ccedil;on &agrave; ce que
les ressources ne soient pas stock&eacute;es s&eacute;par&eacute;ment pour chaque
session.
</p>
<p><code>CacheIgnoreURLSessionIdentifiers None</code> vide la liste
des identifiants ignor&eacute;s. Autrement, chaque identifiant sp&eacute;cifi&eacute; est
ajout&eacute; &agrave; la liste.</p>
<div class="example"><h3>Exemple 1</h3><pre class="prettyprint lang-config">CacheIgnoreURLSessionIdentifiers jsessionid</pre>
</div>
<div class="example"><h3>Exemple 2</h3><pre class="prettyprint lang-config">CacheIgnoreURLSessionIdentifiers None</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachekeybaseurl">Directive <span id="CacheKeyBaseURL">CacheKeyBaseURL</span> <a title="Lien permanent" href="#cachekeybaseurl" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Remplace l'URL de base des cl&eacute;s du cache mandat&eacute;es en
inverse</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheKeyBaseURL <var>URL</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible depuis la version 2.3.9 d'Apache</td></tr>
</table>
<p>Lorsque la directive <code class="directive">CacheKeyBaseURL</code> est utilis&eacute;e, l'URL
sp&eacute;cifi&eacute;e sera utilis&eacute;e comme URL de base pour calculer l'URL des cl&eacute;s
du cache dans la configuration du mandataire inverse. Par d&eacute;faut,
c'est le protocole/nom d'h&ocirc;te/port du serveur virtuel courant qui sera
utilis&eacute; pour construire la cl&eacute; de cache. Dans le cas d'un cluster de
machines, si toutes les entr&eacute;es du cache doivent poss&eacute;der la m&ecirc;me cl&eacute;,
cette directive permet de sp&eacute;cifier une nouvelle URL de base.</p>
<pre class="prettyprint lang-config"># Remplace l'URL de base de la cl&eacute; de cache.
CacheKeyBaseURL http://www.example.com/</pre>
<div class="warning">Prenez garde en d&eacute;finissant cette directive. Si
deux serveurs virtuels distincts poss&egrave;dent accidentellement la m&ecirc;me
URL de base, les entr&eacute;es en provenance d'un serveur virtuel seront
servies par l'autre.</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachelastmodifiedfactor">Directive <span id="CacheLastModifiedFactor">CacheLastModifiedFactor</span> <a title="Lien permanent" href="#cachelastmodifiedfactor" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Le facteur utilis&eacute; pour g&eacute;n&eacute;rer une date d'expiration en
fonction de la date de derni&egrave;re modification.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheLastModifiedFactor <var>flottant</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheLastModifiedFactor 0.1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>Si un document ne poss&egrave;de pas de date d'expiration, elle peut
&ecirc;tre calcul&eacute;e en fonction de la date de derni&egrave;re modification, si
elle existe. La directive
<code class="directive">CacheLastModifiedFactor</code> permet de sp&eacute;cifier
un <var>facteur</var> &agrave; utiliser pour la g&eacute;n&eacute;ration de cette date
d'expiration au sein de la formule suivante :
<code>d&eacute;lai-expiration = dur&eacute;e-depuis-date-derni&egrave;re-modification *
<var>facteur</var>
date-expiration = date-courante + d&eacute;lai-expiration</code>
Par exemple, si la derni&egrave;re modification du document date de 10
heures, et si <var>facteur</var> a pour valeur 0.1, le d&eacute;lai
d'expiration sera de 10*0.1 = 1 heure. Si l'heure courante est
3:00pm, la date d'expiration calcul&eacute;e sera 3:00pm + 1 heure =
4:00pm.
Si le d&eacute;lai d'expiration est sup&eacute;rieur &agrave; celui sp&eacute;cifi&eacute; par la directive
<code class="directive"><a href="#cachemaxexpire">CacheMaxExpire</a></code>, c'est ce dernier
qui l'emporte.</p>
<pre class="prettyprint lang-config">CacheLastModifiedFactor 0.5</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachelock">Directive <span id="CacheLock">CacheLock</span> <a title="Lien permanent" href="#cachelock" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active la protection contre les temp&ecirc;tes de requ&ecirc;tes.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheLock <var>on|off</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheLock off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>La directive <code class="directive">CacheLock</code> active la protection
contre les temp&ecirc;tes de requ&ecirc;tes pour l'espace d'adressage donn&eacute;.</p>
<p>La configuration minimale pour activer le verrouillage contre les
temp&ecirc;tes de requ&ecirc;tes dans le r&eacute;pertoire par
d&eacute;faut des fichiers run-time est
la suivante :</p>
<pre class="prettyprint lang-config"># Active le verrouillage du cache
CacheLock on</pre>
<p>Les verrous sont des fichiers vides qui n'existent que pour les
URLs pr&eacute;sentes dont le contenu est p&eacute;rim&eacute; ; ils consomment dont bien
moins de ressources que le cache disque traditionnel.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachelockmaxage">Directive <span id="CacheLockMaxAge">CacheLockMaxAge</span> <a title="Lien permanent" href="#cachelockmaxage" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;finit la dur&eacute;e de vie maximale d'un verrou de cache.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheLockMaxAge <var>entier</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheLockMaxAge 5</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>La directive <code class="directive">CacheLockMaxAge</code> permet de
sp&eacute;cifier la dur&eacute;e de vie maximale d'un verrou de cache.</p>
<p>Un verrou plus ancien que cette valeur exprim&eacute;e en secondes sera
ignor&eacute;, et la prochaine requ&ecirc;te entrante sera alors en mesure de
recr&eacute;er le verrou. Ce m&eacute;canisme permet d'&eacute;viter les mises &agrave; jour trop
longues initi&eacute;es par des clients lents.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachelockpath">Directive <span id="CacheLockPath">CacheLockPath</span> <a title="Lien permanent" href="#cachelockpath" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;finit le r&eacute;pertoire des verrous.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheLockPath <var>r&eacute;pertoire</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheLockPath mod_cache-lock</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>La directive <code class="directive">CacheLockPath</code> permet de
sp&eacute;cifier le r&eacute;pertoire dans lequel les verrous sont
cr&eacute;&eacute;s. Si <var>r&eacute;pertoire</var> n'est pas un
chemin absolu, il sera relatif au r&eacute;pertoire d&eacute;fini par la directive
<code class="directive"><a href="../mod/core.html#defaultruntimedir">DefaultRuntimeDir</a></code>.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachemaxexpire">Directive <span id="CacheMaxExpire">CacheMaxExpire</span> <a title="Lien permanent" href="#cachemaxexpire" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>La dur&eacute;e maximale en secondes de mise en cache d'un
document</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheMaxExpire <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheMaxExpire 86400 (une journ&eacute;e)</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>La directive <code class="directive">CacheMaxExpire</code> permet de
sp&eacute;cifier le nombre maximum de secondes pendant lequel les documents
HTTP suceptibles d'&ecirc;tre mis en cache seront conserv&eacute;s sans v&eacute;rifier
leur contenu sur le serveur d'origine. Ce nombre de secondes
correspond donc &agrave; la dur&eacute;e maximale pendant laquelle un document ne
sera pas &agrave; jour. L'utilisation de cette valeur maximale est forc&eacute;e,
m&ecirc;me si le document poss&egrave;de une date d'expiration.</p>
<pre class="prettyprint lang-config">CacheMaxExpire 604800</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cacheminexpire">Directive <span id="CacheMinExpire">CacheMinExpire</span> <a title="Lien permanent" href="#cacheminexpire" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>La dur&eacute;e minimale en secondes de mise en cache d'un
document</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheMinExpire <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheMinExpire 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>La directive <code class="directive">CacheMaxExpire</code> permet de
sp&eacute;cifier le nombre maximum de secondes pendant lequel les documents
HTTP suceptibles d'&ecirc;tre mis en cache seront conserv&eacute;s sans v&eacute;rifier
leur contenu sur le serveur d'origine. Elle n'est prise en compte
que dans le cas o&ugrave; le document ne poss&egrave;de aucune date d'expiration
valide.</p>
<pre class="prettyprint lang-config">CacheMinExpire 3600</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachequickhandler">Directive <span id="CacheQuickHandler">CacheQuickHandler</span> <a title="Lien permanent" href="#cachequickhandler" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ex&eacute;cute le cache &agrave; partir d'un gestionnaire rapide.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheQuickHandler <var>on|off</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheQuickHandler on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.3.3 du serveur HTTP
Apache</td></tr>
</table>
<p>La directive <code class="directive">CacheQuickHandler</code> permet de contr&ocirc;ler
la phase au cours de laquelle la mise en cache est effectu&eacute;e.</p>
<p>Avec la configuration par d&eacute;faut, le cache agit au cours de la
phase du gestionnaire rapide. Cette phase court-circuite la majorit&eacute;
des traitements du serveur, et constitue le mode d'op&eacute;ration le plus
performant pour un serveur typique. Le cache
<strong>s'incruste</strong> devant le serveur, et la majorit&eacute; des
traitements du serveur est court-circuit&eacute;e.</p>
<p>Lorsque cette directive est d&eacute;finie &agrave; off, le cache agit comme un
gestionnaire normal, et est concern&eacute; par toutes les phases de
traitement d'une requ&ecirc;te. Bien que ce mode soit moins performant que
le mode par d&eacute;faut, il permet d'utiliser le cache dans les cas o&ugrave; un
traitement complet de la requ&ecirc;te est n&eacute;cessaire, comme par exemple
lorsque le contenu est soumis &agrave; autorisation.</p>
<pre class="prettyprint lang-config"># Ex&eacute;cute le cache comme un gestionnaire normal
CacheQuickHandler off</pre>
<p>Lorsque le gestionnaire rapide est d&eacute;sactiv&eacute;, l'administrateur a
aussi la possibilit&eacute; de choisir avec pr&eacute;cision le point de la cha&icirc;ne
de filtrage o&ugrave; la mise en cache sera effectu&eacute;e, en utilisant le
filtre <strong>CACHE</strong>.</p>
<pre class="prettyprint lang-config"># Mise en cache du contenu avant l'intervention de mod_include et
# mod_deflate
CacheQuickHandler off
AddOutputFilterByType CACHE;INCLUDES;DEFLATE text/html</pre>
<p>Si le filtre CACHE est sp&eacute;cifi&eacute; plusieurs fois, c'est la derni&egrave;re
instance qui sera prise en compte.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachestaleonerror">Directive <span id="CacheStaleOnError">CacheStaleOnError</span> <a title="Lien permanent" href="#cachestaleonerror" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sert du contenu non &agrave; jour &agrave; la place de r&eacute;ponses 5xx.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheStaleOnError <var>on|off</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheStaleOnError on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible depuis la version 2.3.9 d'Apache</td></tr>
</table>
<p>Lorsque la directive <code class="directive">CacheStaleOnError</code> est d&eacute;finie &agrave; on, et
si des donn&eacute;es non mises &agrave; jour sont disponibles dans le cache, ce
dernier renverra ces donn&eacute;es, plut&ocirc;t qu'une &eacute;ventuelle r&eacute;ponse 5xx en
provenance du serveur d'arri&egrave;re-plan. Alors que l'en-t&ecirc;te
Cache-Control envoy&eacute; par les clients sera respect&eacute;, et que les clients
recevront donc dans ce cas la r&eacute;ponse 5xx brute &agrave; leur requ&ecirc;te, cette
r&eacute;ponse 5xx renvoy&eacute;e au client n'invalidera pas le contenu dans le
cache. </p>
<pre class="prettyprint lang-config"># Sert des donn&eacute;es non mises &agrave; jour en cas d'erreur.
CacheStaleOnError on</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachestoreexpired">Directive <span id="CacheStoreExpired">CacheStoreExpired</span> <a title="Lien permanent" href="#cachestoreexpired" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Tente de mettre en cache les r&eacute;ponses que le serveur
consid&egrave;re comme arriv&eacute;es &agrave; expiration</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheStoreExpired On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheStoreExpired Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>Depuis la version 2.2.4, les r&eacute;ponses qui sont arriv&eacute;es &agrave;
expiration ne sont pas stock&eacute;es dans le cache. La directive
<code class="directive">CacheStoreExpired</code> permet de modifier ce
comportement. Avec <code class="directive">CacheStoreExpired</code> On, le
serveur tente de mettre en cache la ressource si elle est p&eacute;rim&eacute;e.
Les requ&ecirc;tes suivantes vont d&eacute;clencher une requ&ecirc;te si-modifi&eacute;-depuis
de la part du serveur d'origine, et la r&eacute;ponse sera renvoy&eacute;e &agrave;
partir du cache si la ressource d'arri&egrave;re-plan n'a pas &eacute;t&eacute; modifi&eacute;e.</p>
<pre class="prettyprint lang-config">CacheStoreExpired On</pre>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachestorenostore">Directive <span id="CacheStoreNoStore">CacheStoreNoStore</span> <a title="Lien permanent" href="#cachestorenostore" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Tente de mettre en cache les requ&ecirc;tes ou r&eacute;ponses dont
l'ent&ecirc;te Cache-Control: a pour valeur no-store.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheStoreNoStore On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheStoreNoStore Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>Normalement, les requ&ecirc;tes ou r&eacute;ponses dont l'en-t&ecirc;te
<code>Cache-Control: no-store</code> ne sont pas stock&eacute;es dans le
cache. La directive <code class="directive">CacheStoreNoStore</code> permet
de modifier ce comportement. Si
<code class="directive">CacheStoreNoStore</code> est d&eacute;finie &agrave; On, le
serveur tente de mettre la ressource en cache m&ecirc;me si elle contient
un en-t&ecirc;te no-store.</p>
<pre class="prettyprint lang-config">CacheStoreNoStore On</pre>
<div class="warning"><h3>Avertissement :</h3>
Selon la RFC 2616, la valeur d'en-t&ecirc;te no-store est cens&eacute;e
"pr&eacute;venir la suppression ou la r&eacute;tention par inadvertance
d'informations sensibles (par exemple, sur des bandes de
sauvegarde)". Autrement dit, l'activation de la directive
<code class="directive">CacheStoreNoCache</code> pourrait provoquer le
stockage d'informations sensibles dans le cache. Vous avez donc
&eacute;t&eacute; pr&eacute;venus.
</div>
<h3>Voir aussi</h3>
<ul>
<li><code class="directive"><a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></code></li>
<li><code class="directive"><a href="#cachestoreprivate">CacheStorePrivate</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="cachestoreprivate">Directive <span id="CacheStorePrivate">CacheStorePrivate</span> <a title="Lien permanent" href="#cachestoreprivate" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Tente de mettre en cache des r&eacute;ponses que le serveur a
marqu&eacute;es comme priv&eacute;es</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheStorePrivate On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>CacheStorePrivate Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
<p>Normalement, les r&eacute;ponse comportant un en-t&ecirc;te <code>Cache-Control: private</code>
ne seront pas stock&eacute;es dans le cache. La
directive <code class="directive">CacheStorePrivate</code> permet de
modifier ce comportement. Si
<code class="directive">CacheStorePrivate</code> est d&eacute;finie &agrave; On, le
serveur tentera de mettre la ressource en cache, m&ecirc;me si elle
contient un en-t&ecirc;te private.</p>
<pre class="prettyprint lang-config">CacheStorePrivate On</pre>
<div class="warning"><h3>Avertissement :</h3>
Cette directive autorise la mise en cache m&ecirc;me si le serveur
indique que la ressource ne doit pas &ecirc;tre mise en cache. Elle
n'est de ce fait appropri&eacute;e que dans le cas d'un cache
'priv&eacute;'.
</div>
<h3>Voir aussi</h3>
<ul>
<li><code class="directive"><a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></code></li>
<li><code class="directive"><a href="#cachestorenostore">CacheStoreNoStore</a></code></li>
</ul>
</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_cache.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_cache.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_cache.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_cache.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autoris&eacute; sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
document.body.appendChild(qv);
var qvBtn = document.createElement('button');
qvBtn.className = 'qv-toggle';
qvBtn.setAttribute('aria-label', 'Toggle page navigation');
qvBtn.innerHTML = '&#9776;';
document.body.appendChild(qvBtn);
qvBtn.addEventListener('click', function() {
var isOpen = qv.classList.toggle('open');
if (isOpen) {
qv.style.top = window.scrollY + 10 + 'px';
}
});
window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>