<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
+<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur Apache HTTP Version 2.5</p>
-<img alt="" src="../images/feather.gif" /></div>
+<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="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div>
reportez-vous au <a href="../caching.html">Guide de la mise en
cache</a>.</p>
</div>
-<div id="quickview"><h3 class="directives">Directives</h3>
+<div id="quickview"><h3>Sujets</h3>
+<ul id="topics">
+<li><img alt="" src="../images/down.gif" /> <a href="#related">Modules apparenté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ête de requête</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#finecontrol">Contrô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="#cachestorenostore">CacheStoreNoStore</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cachestoreprivate">CacheStorePrivate</a></li>
</ul>
-<h3>Sujets</h3>
-<ul id="topics">
-<li><img alt="" src="../images/down.gif" /> <a href="#related">Modules apparenté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ête de requête</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#finecontrol">Contrô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>Voir aussi</h3>
+<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__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_cache">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&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><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
+<li><a href="#comments_section">Commentaires</a></li></ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">Modules apparentés et directives</a></h2>
+ <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparenté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><a name="sampleconf" id="sampleconf">Exemple de configuration</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
+<IfModule mod_cache.c>
+ LoadModule cache_disk_module modules/mod_cache_disk.so
+ <IfModule mod_cache_disk.c>
+ CacheRoot c:/cacheroot
+ CacheEnable disk /
+ CacheDirLevels 5
+ CacheDirLength 3
+ </IfModule>
+
+ # Lorsqu'on sert de mandataire, on ne met pas en cache la liste
+# des mises à jour de sécurité
+ CacheDisable http://security.update.server/update-list/
+</IfModule></pre>
+</div>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="thunderingherd" id="thunderingherd">Eviter une tempête de requête</a></h2>
+ <p>Lorsqu'une entrée du cache est périmée, <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>
+ soumet une requête conditionnelle au processus d'arrière-plan, qui est
+ censé confirmer la validité de l'entrée du cache, ou dans la négative
+ envoyer une entrée mise à jour.</p>
+ <p>Un court mais non négligeable laps de temps existe entre le moment
+ où l'entrée du cache est périmée, et le moment où elle est mise à
+ jour. Sur un serveur fortement chargé, un certain nombre de requêtes
+ peut arriver pendant ce laps de temps, et provoquer une
+ <strong>tempête</strong> de requêtes susceptibles de saturer le
+ processus d'arrière-plan de manière soudaine et imprédictible.</p>
+ <p>Pour contenir cette tempête, on peut utiliser la directive
+ <code class="directive">CacheLock</code> afin de définir un répertoire où
+ seront créés <strong>à la volée</strong> des verrous pour les URLs.
+ Ces verrous sont utilisés comme autant d'<strong>indications</strong>
+ par les autres requêtes, soit pour empêcher une tentative de mise en
+ cache (un autre processus est en train de récupérer l'entité), soit
+ pour indiquer qu'une entrée périmée est en cours de mise à jour
+ (pendant ce temps, c'est le contenu périmé qui sera renvoyé).
+ </p>
+ <h3>Mise en cache initiale d'une entrée</h3>
+
+ <p>Lorsqu'une entité est mise en cache pour la première fois, un
+ verrou est créé pour cette entité jusqu'à ce que la réponse ait été
+ entièrement mise en cache. Pendant la durée de vie du verrou, le
+ cache va empêcher une seconde tentative de mise en cache de la même
+ entité. Bien que cela ne suffise pas à contenir la tempête de
+ requêtes, toute tentative de mettre en cache la même entité
+ plusieurs fois simultanément est stoppée.
+ </p>
+
+ <h3>Mise à jour d'une entrée périmée</h3>
+
+ <p>Lorsqu'une entrée atteint la limite de sa durée de vie, et
+ devient par conséquent périmée, un verrou est créé pour cette entité
+ jusqu'à ce que la réponse ait été soit confirmée comme encore
+ valide, soit remplacée par le processus d'arrière-plan. Pendant la
+ durée de vie du verrou, une seconde requête entrante va provoquer le
+ renvoi de la donnée périmée, et la tempête de requêtes sera
+ contenue.</p>
+
+ <h3>Verrous et en-tête Cache-Control: no-cache</h3>
+
+ <p>Les verrous ne sont utilisés <strong>qu'à titre
+ indicatif</strong> pour enjoindre le cache à être plus coopératif
+ avec les serveurs d'arrière-plan, et il est possible de passer outre
+ si nécessaire. Si le client envoie une requête contenant un en-tête
+ Cache-Control imposant un nouveau téléchargement de l'entité, tout
+ verrou éventuel sera ignoré, la requête du client sera honorée
+ immédiatement, et l'entrée du cache mise à jour.</p>
+
+ <p>Comme mécanisme de sécurité supplémentaire, la durée de vie
+ maximale des verrous est configurable. Lorsque cette limite est
+ atteinte, le verrou est supprimé et une autre requête peut alors en
+ créer un nouveau. Cette durée de vie peut être définie via la
+ directive <code class="directive">CacheLockMaxAge</code>, et sa valeur par
+ dé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
+#
+<IfModule mod_cache.c>
+ CacheLock on
+ CacheLockPath /tmp/mod_cache-lock
+ CacheLockMaxAge 5
+</IfModule></pre>
+</div>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="finecontrol" id="finecontrol">Contrôle fin via le filtre CACHE</a></h2>
+ <p>Dans son mode de fonctionnement par défaut, le cache s'exécute sous
+ la forme d'un gestionnaire rapide, court-circuitant la majorité des
+ traitements du serveur et fournissant ainsi une mise en cache
+ possé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épendant RFC 2616
+ était placé 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ête après que cette dernière ait
+ été mise en cache, comme ajouter du contenu personnalisé à la page
+ mise en cache, ou appliquer des restrictions d'autorisations au
+ contenu. Pour y parvenir, l'administrateur sera alors souvent forcé de
+ placer des serveurs mandataires inverses indépendants soit derrière,
+ soit devant le serveur de mise en cache.</p>
+
+ <p>Pour résoudre ce problème, la directive <code class="directive"><a href="#cachequickhandler">CacheQuickHandler</a></code> peut être définie à
+ <strong>off</strong>, afin que le serveur traite toutes les phases
+ normalement exécutées par une requête non mise en cache, y compris les
+ phases <strong>d'authentification et d'autorisation</strong>.</p>
+
+ <p>En outre, l'administrateur peut éventuellement spécifier le
+ <strong>point précis dans la chaîne de filtrage</strong> où devra
+ intervenir la mise en cache en ajoutant le filtre
+ <strong>CACHE</strong> à la chaîne de filtrage en sortie.</p>
+
+ <p>Par exemple, pour mettre en cache le contenu avant d'appliquer une
+ compression à la ré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é consiste à mettre en cache le contenu avant
+ l'ajout de contenu personnalisé 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è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'être
+ interprété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érer le filtre <strong>CACHE</strong> en tout point
+ de la chaîne de filtrage. Dans l'exemple suivant, le contenu est mis
+ en cache après avoir été interprété par <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>,
+ mais avant d'être traité 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îne de filtrage est modifié, vous
+ devez <strong>vider votre cache</strong> pour être sûr que les données
+ servies soient à 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ération à votre place.</div>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="status" id="status">Etat du cache et journalisation</a></h2>
+ <p>Lorsque <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> a décidé s'il devait ou non
+ servir une entité depuis le cache, les raisons précises de cette
+ décision sont enregistrées dans l'environnement du sous-processus
+ interne à la requête sous la clé <strong>cache-status</strong>.
+ Cette information peut être journalisé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écision prise, l'information est aussi écrite
+ dans l'environnement du sous-processus sous une des quatre clés
+ suivantes :</p>
+
+ <dl>
+ <dt>cache-hit</dt><dd>Le contenu a été servi depuis le cache.</dd>
+ <dt>cache-revalidate</dt><dd>Le contenu du cache était périmé, a été
+ mis à jour avec succès, puis servi depuis le cache.</dd>
+ <dt>cache-miss</dt><dd>Le contenu n'était pas dans le cache et a été
+ servi directement depuis le serveur demandé.</dd>
+ <dt>cache-invalidate</dt><dd>L'entité du cache est devenue invalide
+ suite à une requê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ê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ée
+ <var>cache_status</var> est disponible et permet aux modules de
+ répondre aux résultats de la vérification du cache ci-dessus de manière
+ personnalisée.</p>
+
+</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="cachedefaultexpire" id="cachedefaultexpire">Directive</a> <a name="CacheDefaultExpire" id="CacheDefaultExpire">CacheDefaultExpire</a></h2>
<table class="directive">
cache sera désactivée pour l'ensemble de l'arborescence concernée
par la section Location.</p>
- <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config"><Location /foo>
+ <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config"><Location "/foo">
CacheDisable on
</Location></pre>
</div>
<pre class="prettyprint lang-config"># Mise en cache de contenu (gestionnaire normal seulement)
CacheQuickHandler off
-<Location /foo>
+<Location "/foo">
CacheEnable disk
</Location>
# Mise en cache via une expression rationnelle (gestionnaire normal seulement)
CacheQuickHandler off
-<LocationMatch foo$>
+<LocationMatch "foo$">
CacheEnable disk
</LocationMatch>
<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 class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="related" id="related">Modules apparentés et directives</a></h2>
- <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparenté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><a name="sampleconf" id="sampleconf">Exemple de configuration</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
-<IfModule mod_cache.c>
- LoadModule cache_disk_module modules/mod_cache_disk.so
- <IfModule mod_cache_disk.c>
- CacheRoot c:/cacheroot
- CacheEnable disk /
- CacheDirLevels 5
- CacheDirLength 3
- </IfModule>
-
- # Lorsqu'on sert de mandataire, on ne met pas en cache la liste
-# des mises à jour de sécurité
- CacheDisable http://security.update.server/update-list/
-</IfModule></pre>
-</div>
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="thunderingherd" id="thunderingherd">Eviter une tempête de requête</a></h2>
- <p>Lorsqu'une entrée du cache est périmée, <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>
- soumet une requête conditionnelle au processus d'arrière-plan, qui est
- censé confirmer la validité de l'entrée du cache, ou dans la négative
- envoyer une entrée mise à jour.</p>
- <p>Un court mais non négligeable laps de temps existe entre le moment
- où l'entrée du cache est périmée, et le moment où elle est mise à
- jour. Sur un serveur fortement chargé, un certain nombre de requêtes
- peut arriver pendant ce laps de temps, et provoquer une
- <strong>tempête</strong> de requêtes susceptibles de saturer le
- processus d'arrière-plan de manière soudaine et imprédictible.</p>
- <p>Pour contenir cette tempête, on peut utiliser la directive
- <code class="directive">CacheLock</code> afin de définir un répertoire où
- seront créés <strong>à la volée</strong> des verrous pour les URLs.
- Ces verrous sont utilisés comme autant d'<strong>indications</strong>
- par les autres requêtes, soit pour empêcher une tentative de mise en
- cache (un autre processus est en train de récupérer l'entité), soit
- pour indiquer qu'une entrée périmée est en cours de mise à jour
- (pendant ce temps, c'est le contenu périmé qui sera renvoyé).
- </p>
- <h3>Mise en cache initiale d'une entrée</h3>
-
- <p>Lorsqu'une entité est mise en cache pour la première fois, un
- verrou est créé pour cette entité jusqu'à ce que la réponse ait été
- entièrement mise en cache. Pendant la durée de vie du verrou, le
- cache va empêcher une seconde tentative de mise en cache de la même
- entité. Bien que cela ne suffise pas à contenir la tempête de
- requêtes, toute tentative de mettre en cache la même entité
- plusieurs fois simultanément est stoppée.
- </p>
-
- <h3>Mise à jour d'une entrée périmée</h3>
-
- <p>Lorsqu'une entrée atteint la limite de sa durée de vie, et
- devient par conséquent périmée, un verrou est créé pour cette entité
- jusqu'à ce que la réponse ait été soit confirmée comme encore
- valide, soit remplacée par le processus d'arrière-plan. Pendant la
- durée de vie du verrou, une seconde requête entrante va provoquer le
- renvoi de la donnée périmée, et la tempête de requêtes sera
- contenue.</p>
-
- <h3>Verrous et en-tête Cache-Control: no-cache</h3>
-
- <p>Les verrous ne sont utilisés <strong>qu'à titre
- indicatif</strong> pour enjoindre le cache à être plus coopératif
- avec les serveurs d'arrière-plan, et il est possible de passer outre
- si nécessaire. Si le client envoie une requête contenant un en-tête
- Cache-Control imposant un nouveau téléchargement de l'entité, tout
- verrou éventuel sera ignoré, la requête du client sera honorée
- immédiatement, et l'entrée du cache mise à jour.</p>
-
- <p>Comme mécanisme de sécurité supplémentaire, la durée de vie
- maximale des verrous est configurable. Lorsque cette limite est
- atteinte, le verrou est supprimé et une autre requête peut alors en
- créer un nouveau. Cette durée de vie peut être définie via la
- directive <code class="directive">CacheLockMaxAge</code>, et sa valeur par
- dé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
-#
-<IfModule mod_cache.c>
- CacheLock on
- CacheLockPath /tmp/mod_cache-lock
- CacheLockMaxAge 5
-</IfModule></pre>
-</div>
-
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="finecontrol" id="finecontrol">Contrôle fin via le filtre CACHE</a></h2>
- <p>Dans son mode de fonctionnement par défaut, le cache s'exécute sous
- la forme d'un gestionnaire rapide, court-circuitant la majorité des
- traitements du serveur et fournissant ainsi une mise en cache
- possé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épendant RFC 2616
- était placé 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ête après que cette dernière ait
- été mise en cache, comme ajouter du contenu personnalisé à la page
- mise en cache, ou appliquer des restrictions d'autorisations au
- contenu. Pour y parvenir, l'administrateur sera alors souvent forcé de
- placer des serveurs mandataires inverses indépendants soit derrière,
- soit devant le serveur de mise en cache.</p>
-
- <p>Pour résoudre ce problème, la directive <code class="directive"><a href="#cachequickhandler">CacheQuickHandler</a></code> peut être définie à
- <strong>off</strong>, afin que le serveur traite toutes les phases
- normalement exécutées par une requête non mise en cache, y compris les
- phases <strong>d'authentification et d'autorisation</strong>.</p>
-
- <p>En outre, l'administrateur peut éventuellement spécifier le
- <strong>point précis dans la chaîne de filtrage</strong> où devra
- intervenir la mise en cache en ajoutant le filtre
- <strong>CACHE</strong> à la chaîne de filtrage en sortie.</p>
-
- <p>Par exemple, pour mettre en cache le contenu avant d'appliquer une
- compression à la ré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é consiste à mettre en cache le contenu avant
- l'ajout de contenu personnalisé 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è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'être
- interprété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érer le filtre <strong>CACHE</strong> en tout point
- de la chaîne de filtrage. Dans l'exemple suivant, le contenu est mis
- en cache après avoir été interprété par <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>,
- mais avant d'être traité 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îne de filtrage est modifié, vous
- devez <strong>vider votre cache</strong> pour être sûr que les données
- servies soient à 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ération à votre place.</div>
-
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="status" id="status">Etat du cache et journalisation</a></h2>
- <p>Lorsque <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> a décidé s'il devait ou non
- servir une entité depuis le cache, les raisons précises de cette
- décision sont enregistrées dans l'environnement du sous-processus
- interne à la requête sous la clé <strong>cache-status</strong>.
- Cette information peut être journalisé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écision prise, l'information est aussi écrite
- dans l'environnement du sous-processus sous une des quatre clés
- suivantes :</p>
-
- <dl>
- <dt>cache-hit</dt><dd>Le contenu a été servi depuis le cache.</dd>
- <dt>cache-revalidate</dt><dd>Le contenu du cache était périmé, a été
- mis à jour avec succès, puis servi depuis le cache.</dd>
- <dt>cache-miss</dt><dd>Le contenu n'était pas dans le cache et a été
- servi directement depuis le serveur demandé.</dd>
- <dt>cache-invalidate</dt><dd>L'entité du cache est devenue invalide
- suite à une requê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ê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ée
- <var>cache_status</var> est disponible et permet aux modules de
- répondre aux résultats de la vérification du cache ci-dessus de manière
- personnalisée.</p>
-
</div>
</div>
<div class="bottomlang">
}
})(window, document);
//--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2015 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Autorisé sous <a href="http://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="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();