1<?xml version="1.0" encoding="ISO-8859-1"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!-- 4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 5 This file is generated from xml source: DO NOT EDIT 6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 --> 8<title>Guide de la mise en cache - Serveur Apache HTTP</title> 9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> 10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> 11<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" /> 12<script src="/style/scripts/prettify.min.js" type="text/javascript"> 13</script> 14 15<link href="/images/favicon.ico" rel="shortcut icon" /></head> 16<body id="manual-page"><div id="page-header"> 17<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.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> 18<p class="apache">Serveur Apache HTTP Version 2.4</p> 19<img alt="" src="/images/feather.gif" /></div> 20<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 22<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.4</a></div><div id="page-content"><div id="preamble"><h1>Guide de la mise en cache</h1> 23<div class="toplang"> 24<p><span>Langues Disponibles: </span><a href="/en/caching.html" hreflang="en" rel="alternate" title="English"> en </a> | 25<a href="/fr/caching.html" title="Fran�ais"> fr </a> | 26<a href="/tr/caching.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a></p> 27</div> 28 29 <p>Ce document compl�te la documentation de r�f�rence des modules 30 <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code>, <code class="module"><a href="/mod/mod_cache_disk.html">mod_cache_disk</a></code>, 31 <code class="module"><a href="/mod/mod_file_cache.html">mod_file_cache</a></code> et du programme <a href="programs/htcacheclean.html">htcacheclean</a>. 32 Il d�crit l'utilisation des fonctionnalit�s de mise en 33 cache du serveur HTTP Apache 34 pour acc�l�rer les services web et proxy, tout en �vitant les probl�mes 35 courants et les erreurs de configuration.</p> 36 </div> 37<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#introduction">Introduction</a></li> 38<li><img alt="" src="/images/down.gif" /> <a href="#http-caching">Mise en cache HTTP � trois �tats RFC2616</a></li> 39<li><img alt="" src="/images/down.gif" /> <a href="#socache-caching">Mise en cache d'objets partag�s � deux �tats de forme 40 cl�/valeur</a></li> 41<li><img alt="" src="/images/down.gif" /> <a href="#file-caching">Mise en cache � base de fichiers sp�cialis�s</a></li> 42<li><img alt="" src="/images/down.gif" /> <a href="#security">Consid�rations sur la s�curit�</a></li> 43</ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div> 44<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 45<div class="section"> 46<h2><a name="introduction" id="introduction">Introduction</a></h2> 47 48 49 <p>Le serveur HTTP Apache offre tout un ensemble de fonctionnalit�s 50 de mise en cache qui ont �t� con�ues pour am�liorer les performances 51 du serveur de diff�rentes mani�res.</p> 52 53 <dl> 54 <dt>Mise en cache HTTP � trois �tats RFC2616</dt> 55 <dd><code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> et son module de fournisseur 56 <code class="module"><a href="/mod/mod_cache_disk.html">mod_cache_disk</a></code> proposent une mise en cache 57 intelligente de niveau HTTP. Le contenu proprement dit est 58 stock� dans le cache, et mod_cache vise � respecter tous les 59 en-t�tes HTTP, ainsi que les options qui contr�lent la mise en 60 cache du contenu comme d�crit dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html">Section 61 13 de la RFC2616</a>. <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> peut g�rer des 62 configurations de mise en cache simples, mais aussi complexes 63 comme dans les cas o� vous avez � faire � des contenus mandat�s, 64 � des contenus locaux dynamiques, ou lorsque vous avez besoin 65 d'acc�l�rer l'acc�s aux fichiers locaux situ�s sur disque 66 suppos� lent. 67 </dd> 68 69 <dt>Mise en cache d'objets partag�s de forme cl�/valeur � deux 70 �tats</dt> 71 <dd> 72 L'<a href="socache.html">API du cache d'objets partag�s</a> (socache) 73 et ses modules de fournisseurs 74 proposent une mise en cache d'objets partag�s � base de 75 couples cl�/valeur de niveau serveur. Ces modules sont 76 con�us pour la mise en cache de donn�es de bas niveau comme 77 les sessions SSL et les donn�es d'authentification. les 78 serveurs d'arri�re-plan permettent le stockage des donn�es 79 au niveau serveur en m�moire partag�e, ou au niveau 80 datacenter dans un cache comme memcache ou distcache. 81 </dd> 82 83 <dt>Mise en cache de fichiers sp�cialis�e</dt> 84 <dd> 85 <code class="module"><a href="/mod/mod_file_cache.html">mod_file_cache</a></code> offre la possibilit� de 86 pr�charger des fichiers en m�moire au d�marrage du serveur, 87 et peut am�liorer les temps d'acc�s et sauvegarder les 88 gestionnaires de fichiers pour les fichiers qui font l'objet 89 d'acc�s fr�quents, �vitant ainsi d'avoir � acc�der au disque 90 � chaque requ�te. 91 </dd> 92 </dl> 93 94 <p>Pour tirer parti efficacement de ce document, les bases de HTTP doivent 95 vous �tre famili�res, et vous devez avoir lu les sections 96 <a href="urlmapping.html">Mise en correspondance des 97 URLs avec le syst�me de fichiers</a> et 98 <a href="content-negotiation.html">N�gociation sur le contenu</a> 99 du guide de l'utilisateur.</p> 100 101 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 102<div class="section"> 103<h2><a name="http-caching" id="http-caching">Mise en cache HTTP � trois �tats RFC2616</a></h2> 104 105 106 107 <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.html">mod_cache</a></code></li><li><code class="module"><a href="/mod/mod_cache_disk.html">mod_cache_disk</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="/mod/mod_cache.html#cachedisable">CacheDisable</a></code></li><li><code class="directive"><a href="/mod/core.html#usecanonicalname">UseCanonicalName</a></code></li><li><code class="directive"><a href="/mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code></li></ul></td></tr></table> 108 109 <p>Le module <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> permet de tirer avantage du 110 m�canisme de mise en cache en ligne faisant partie 111 int�grante du protocole HTTP, et d�crit dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html">section 112 13 de la RFC2616</a>.</p> 113 114 <p>A la diff�rence d'un cache simple cl�/valeur � deux �tats o� le 115 contenu est supprim� lorsqu'il est p�rim�, un cache HTTP comporte un 116 m�canisme permettant de conserver temporairement un contenu p�rim�, 117 de demander au serveur original si ce contenu p�rim� a �t� modifi�, 118 et dans le cas contraire de le rendre � nouveau valide.</p> 119 120 <p>Une entr�e d'un cache HTTP peut se pr�senter sous un de ces trois 121 �tats :</p> 122 123 <dl> 124 <dt>Frais</dt> 125 <dd> 126 Si un contenu est suffisamment r�cent (plus jeune que sa 127 <strong>dur�e de fra�cheur</strong>), il est consid�r� comme 128 <strong>frais</strong>. Un cache HTTP peut servir un contenu 129 frais sans avoir � demander quoi que ce soit au serveur 130 d'origine. 131 </dd> 132 <dt>P�rim�</dt> 133 <dd> 134 <p>Si le contenu est trop ancien (plus vieux que sa 135 <strong>dur�e de fra�cheur</strong>), il est consid�r� comme 136 <strong>p�rim�</strong>. Un cache HTTP doit contacter le serveur 137 original pour v�rifier si le contenu, m�me s'il est p�rim�, est 138 encore � jour avant de le servir au client. Soit le serveur 139 original va r�pondre en envoyant un contenu de remplacement si 140 le contenu p�rim� n'est plus � jour, soit dans le cas id�al il 141 renverra un code pour signaler au cache que le contenu est 142 encore � jour, et qu'il est inutile de le g�n�rer ou de 143 l'envoyer � nouveau. Le contenu repasse � l'�tat "frais" et le 144 cycle continue.</p> 145 146 <p>Le protocole HTTP permet au cache de servir des donn�es 147 p�rim�es dans certaines circonstances, comme lorsqu'une 148 tentative de rafra�chir une entr�e depuis un serveur original 149 se solde par un �chec avec un code d'erreur 5xx, ou lorsqu'une 150 autre requ�te est d�j� en train d'essayer de rafra�chir la m�me 151 entr�e. Dans ces cas, un en-t�te <code>Warning</code> est ajout� 152 � la r�ponse.</p> 153 </dd> 154 <dt>Non Existent</dt> 155 <dd> 156 Si le cache est plein, il se r�serve la possibilit� de supprimer 157 des entr�es pour faire de la place. Une entr�e peut �tre 158 supprim�e � tout moment, qu'elle soit fra�che ou p�rim�e. 159 L'outil <a href="programs/htcacheclean.html">htcacheclean</a> 160 peut �tre utilis� � la demande, ou lanc� en tant que d�mon afin 161 de conserver la taille du cache ou le nombre d'inodes en de�� de 162 valeurs sp�cifi�es. Cet outil essaie cependant de 163 supprimer les entr�es p�rim�es avant les entr�es fra�ches. 164 </dd> 165 </dl> 166 167 <p>Le fonctionnement d�taill� d'un cache HTTP est d�crit dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html">Section 168 13 de la RFC2616</a>.</p> 169 170 <h3>Interaction avec le serveur</h3> 171 172 173 <p>Le module <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> interagit avec le serveur 174 � deux niveaux possibles en fonction de la directive <code class="directive"><a href="/mod/mod_cache.html#cachequickhandler">CacheQuickHandler</a></code> : 175 </p> 176 177 <dl> 178 <dt>Phase du gestionnaire rapide</dt> 179 <dd> 180 <p>Cette phase se d�roule tr�s t�t au cours du traitement de 181 la requ�te, juste apr�s l'interpr�tation de cette derni�re. Si 182 le contenu se trouve dans le cache, il est servi imm�diatement 183 et pratiquement tout le reste du traitement de la requ�te est 184 court-circuit�.</p> 185 186 <p>Dans ce sc�nario, le cache se comporte comme s'il avait 187 �t� "boulonn�" � l'entr�e du serveur.</p> 188 189 <p>Ce mode poss�de les meilleures performances car la 190 majorit� des traitements au niveau du serveur sont 191 court-circuit�s. Cependant, il court-circuite aussi les 192 phases d'authentification et d'autorisation du traitement 193 au niveau du serveur, et il doit donc �tre utilis� avec 194 prudence lorsque que ces phases sont importantes.</p> 195 </dd> 196 <dt>Phase du gestionnaire normal</dt> 197 <dd> 198 <p>Cette phase se d�roule tr�s tard au cours du traitement 199 de la requ�te, en fait apr�s toutes les phases de ce 200 traitement.</p> 201 202 <p>Dans ce sc�nario, le cache se comporte comme s'il avait 203 �t� "boulonn�" � la sortie du serveur.</p> 204 205 <p>Ce mode offre la plus grande souplesse, car il permet 206 de faire intervenir la mise en cache en un point 207 pr�cis�ment sp�cifi� de la cha�ne de filtrage, et le 208 contenu issu du cache peut �tre filtr� ou personnalis� 209 avant d'�tre servi au client.</p> 210 </dd> 211 </dl> 212 213 <p>Si l'URL ne se trouve pas dans le cache, 214 <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> ajoutera un <a href="filter.html">filtre</a> � la cha�ne de filtrage afin 215 d'enregistrer la r�ponse dans le cache, puis passera la main 216 pour permettre le d�roulement normal de la suite du traitement 217 de la requ�te. Si la mise en cache du contenu est autoris�e, il 218 sera enregistr� dans le cache pour pouvoir �tre servi � nouveau 219 ; dans le cas contraire, le contenu sera ignor�.</p> 220 221 <p>Si le contenu trouv� dans le cache est p�rim�, le module 222 <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> convertit la requ�te en 223 <strong>requ�te conditionnelle</strong>. Si le serveur original 224 renvoie une r�ponse normale, elle est enregistr�e dans le cache 225 en lieu et place du contenu p�rim�. Si le serveur original 226 renvoie une r�ponse "304 Not Modified", le contenu repasse � 227 l'�tat "frais" et est servi par le filtre au lieu d'�tre 228 sauvegard�.</p> 229 230 231 <h3>Am�lioration du taux de pr�sence dans le cache</h3> 232 233 234 <p>Lorsqu'un serveur virtuel est connu sous la forme d'un des 235 nombreux alias du serveur, la d�finition de la directive 236 <code class="directive"><a href="/mod/core.html#usecanonicalname">UseCanonicalName</a></code> � 237 <code>On</code> peut augmenter de mani�re significative le nombre 238 de correspondances positives dans le cache. Ceci est du au fait 239 que la cl� du cache contient le nom d'h�te du serveur virtuel. 240 Avec <code class="directive"><a href="/mod/core.html#usecanonicalname">UseCanonicalName</a></code> positionn�e 241 � <code>On</code>, 242 les h�tes virtuels poss�dant plusieurs noms de serveur ou alias ne 243 g�n�reront pas d'entit�s de cache diff�rentes, et le contenu sera mis en 244 cache en faisant r�f�rence au nom d'h�te canonique.</p> 245 246 247 248 <h3>Dur�e de fra�cheur</h3> 249 250 251 <p>Un contenu bien form� destin� � �tre mis en cache doit d�clarer 252 explicitement une dur�e de fra�cheur via les champs 253 <code>max-age</code> ou <code>s-maxage</code> de l'en-t�te 254 <code>Cache-Control</code>, ou en incluant un en-t�te 255 <code>Expires</code>.</p> 256 257 <p>De plus, un client peut passer outre la dur�e de fra�cheur 258 d�finie pour le serveur original en ajoutant son propre en-t�te 259 <code>Cache-Control</code> � la requ�te. Dans ce cas, c'est la 260 dur�e de fra�cheur la plus basse entre la requ�te et la r�ponse 261 qui l'emporte.</p> 262 263 <p>Lorsque cette dur�e de fra�cheur est absente de la requ�te ou 264 de la r�ponse, une dur�e de fra�cheur par d�faut s'applique. La 265 dur�e de fra�cheur par d�faut des entr�es du cache est d'une heure 266 ; elle peut cependant �tre facilement modifi�e � l'aide de 267 la directive <code class="directive"><a href="/mod/mod_cache.html#cachedefaultexpire">CacheDefaultExpire</a></code>.</p> 268 269 <p>Si une r�ponse ne contient pas d'en-t�te <code>Expires</code> mais 270 inclut un en-t�te <code>Last-Modified</code>, <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> 271 peut d�duire une dur�e de fra�cheur en se basant sur une 272 heuristique, qui peut �tre contr�l�e via la directive <code class="directive"><a href="/mod/mod_cache.html#cachelastmodifiedfactor">CacheLastModifiedFactor</a></code>.</p> 273 274 <p>Pour les contenus locaux, ou les contenus distants qui ne 275 sp�cifient pas leur propre en-t�te <code>Expires</code>, 276 <code class="module"><a href="/mod/mod_expires.html">mod_expires</a></code> permet de r�gler finement la dur�e de 277 fra�cheur via les param�tres <code>max-age</code> et 278 <code>Expires</code>.</p> 279 280 <p>On peut aussi contr�ler la dur�e de fra�cheur maximale en utilisant 281 la directive <code class="directive"><a href="/mod/mod_cache.html#cachemaxexpire">CacheMaxExpire</a></code>.</p> 282 283 284 285 <h3>Guide succinct des requ�tes conditionnelles</h3> 286 287 288 <p>Lorsqu'un contenu du cache est p�rim�, httpd modifie la requ�te 289 pour en faire une requ�te conditionnelle</p> 290 291 <p>Lorsque la r�ponse originale du cache contient un en-t�te 292 <code>ETag</code>, <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> ajoute un en-t�te 293 <code>If-None-Match</code> � la requ�te envoy�e au serveur 294 d'origine. Lorsque la r�ponse originale du cache contient un en-t�te 295 <code>Last-Modified</code>, <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> ajoute un en-t�te 296 <code>If-Modified-Since</code> � la requ�te envoy�e au serveur 297 d'origine. Dans ces deux cas, la requ�te devient une requ�te 298 <strong>conditionnelle</strong>.</p> 299 300 <p>Lorsqu'un serveur d'origine re�oit une requ�te conditionnelle, 301 il v�rifie si le param�tre Etag ou Last-Modified a �t� modifi� en 302 fonction des param�tres de la requ�te. Si ce n'est pas le cas, il 303 r�pondra avec le message lapidaire "304 Not Modified". Ceci 304 informe le cache que le contenu est p�rim� mais encore � jour, et 305 peut �tre utilis� tel quel pour les prochaines requ�tes jusqu'� ce 306 qu'il atteigne � nouveau sa date de p�remption.</p> 307 308 <p>Si le contenu a �t� modifi�, il est servi comme s'il s'agissait 309 d'une requ�te normale et non conditionnelle.</p> 310 311 <p>Les requ�tes conditionnelles offrent deux avantages. D'une 312 part, il est facile de d�terminer si le contenu du serveur 313 d'origine correspond � celui situ� 314 dans le cache, et ainsi d'�conomiser la consommation de ressources 315 n�cessaire au transfert du contenu dans son ensemble.</p> 316 317 <p>D'autre part, un serveur d'origine bien con�u sera configur� de 318 telle mani�re que les requ�tes conditionnelles n�cessitent pour 319 leur production bien moins de ressources qu'une r�ponse compl�te. 320 Dans le cas des fichiers statiques, il suffit en g�n�ral d'un 321 appel syst�me de type <code>stat()</code> ou similaire pour 322 d�terminer si la taille ou la date de modification du fichier a 323 �t� modifi�e. Ainsi, m�me un contenu local pourra �tre servi plus 324 rapidement depuis le cache s'il n'a pas �t� modifi�.</p> 325 326 <p>Il serait souhaitable que tous les serveurs d'origine 327 supportent les requ�tes conditionnelles, car dans le cas 328 contraire, ils r�pondent comme s'il s'agissait d'une requ�te 329 normale, et le cache r�pond comme si le contenu avait �t� 330 modifi� et enregistre ce dernier. Le cache se comporte alors 331 comme un simple cache � deux �tat, o� le contenu est servi s'il 332 est � jour, ou supprim� dans le cas contraire.</p> 333 334 335 <h3>Que peut-on mettre en cache ?</h3> 336 337 338 <p>La liste compl�te des conditions n�cessaires pour qu'une 339 r�ponse puisse �tre enregistr�e dans un cache HTTP est fournie 340 dans la <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.4">section 341 13.4 Response Cacheability de la RFC2616</a>, et peut se r�sumer 342 ainsi :</p> 343 344 <ol> 345 <li>La mise en cache doit �tre activ�e pour cette URL. Voir les 346 directives <code class="directive"><a href="/mod/mod_cache.html#cacheenable">CacheEnable</a></code> et <code class="directive"><a href="/mod/mod_cache.html#cachedisable">CacheDisable</a></code>.</li> 347 348 <li>La reponse doit avoir un code de statut HTTP de 200, 203, 300, 301 349 ou 410.</li> 350 351 <li>La requ�te doit �tre de type HTTP GET.</li> 352 353 <li>Si la r�ponse contient un en-t�te "Authorization:", elle doit aussi 354 contenir une option "s-maxage", "must-revalidate" ou "public" 355 dans l'en-t�te "Cache-Control:".</li> 356 357 <li>Si l'URL contient une cha�ne de requ�te 358 (provenant par exemple d'une m�thode GET de formulaire HTML), elle ne 359 sera pas mise en cache, � moins que la r�ponse ne 360 sp�cifie explicitement un d�lai d'expiration via un 361 en-t�te "Expires:" ou une directive max-age ou s-maxage de 362 l'en-t�te "Cache-Control:" comme indiqu� dans les 363 sections 13.2.1. et 13.9 de la RFC2616.</li> 364 365 <li>Si la r�ponse a un statut de 200 (OK), elle doit aussi contenir 366 au moins un des en-t�tes "Etag", "Last-Modified" ou 367 "Expires", ou une directive max-age ou s-maxage de 368 l'en-t�te "Cache-Control:", � moins que la directive 369 <code class="directive"><a href="/mod/mod_cache.html#cacheignorenolastmod">CacheIgnoreNoLastMod</a></code> 370 ne pr�cise d'autres contraintes.</li> 371 372 <li>Si la r�ponse contient l'option "private" dans un en-t�te 373 "Cache-Control:", elle ne sera pas mise en cache � moins que la 374 directive 375 <code class="directive"><a href="/mod/mod_cache.html#cachestoreprivate">CacheStorePrivate</a></code> 376 ne pr�cise d'autres contraintes.</li> 377 378 <li>De m�me, si la r�ponse contient l'option "no-store" dans un en-t�te 379 "Cache-Control:", elle ne sera pas mise en cache � moins que la 380 directive 381 <code class="directive"><a href="/mod/mod_cache.html#cachestorenostore">CacheStoreNoStore</a></code> 382 n'ait �t� utilis�e.</li> 383 384 <li>Une r�ponse ne sera pas mise en cache si elle comporte un en-t�te 385 "Vary:" contenant le caract�re "*" qui correspond � toute 386 cha�ne de caract�res.</li> 387 </ol> 388 389 390 <h3>Qu'est ce qui ne doit pas �tre mis en cache ?</h3> 391 392 393 <p>Le client qui cr�e la requ�te ou le serveur d'origine qui 394 g�n�re la r�ponse doit �tre � m�me de d�terminer si le contenu 395 doit pouvoir �tre mis en cache ou non en d�finissant correctement 396 l'en-t�te <code>Cache-Control</code>, et 397 <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> sera alors en mesure de satisfaire les 398 souhaits du client ou du serveur de mani�re appropri�e. 399 </p> 400 401 <p>Les contenus qui varient au cours du temps, ou en fonction de 402 particularit�s de la requ�te non prises en compte par la 403 n�gociation HTTP ne doivent pas �tre mis en cache. Ce type de 404 contenu doit se d�clarer lui-m�me "� ne pas mettre en cache" via 405 l'en-t�te <code>Cache-Control</code>.</p> 406 407 <p>Si le contenu change souvent, suite par exemple � une dur�e de 408 fra�cheur de l'ordre de la minute ou de la seconde, il peut tout 409 de m�me �tre mis en cache, mais il est alors fortement souhaitable 410 que le serveur d'origine supporte correctement les 411 <strong>requ�tes conditionnelles</strong> afin que des r�ponses 412 compl�tes ne soient pas syst�matiquement g�n�r�es.</p> 413 414 <p>Un contenu qui varie en fonction d'en-t�tes de requ�te fournis 415 par le client peut �tre mis en cache, sous r�serve d'une 416 utilisation appropri�e de l'en-t�te de r�ponse <code>Vary</code>.</p> 417 418 419 <h3>Contenu variable et/ou n�goci�</h3> 420 421 422 <p>Lorsque le serveur d'origine est configur� pour servir des 423 contenus diff�rents en fonction de la valeur de certains en-t�tes 424 de la requ�te, par exemple pour servir une ressource en plusieurs 425 langages � partir d'une seule URL, le m�canisme de mise en cache 426 d'HTTP permet de mettre en cache plusieurs variantes de la m�me 427 page � partir d'une seule URL.</p> 428 429 <p>Pour y parvenir, le serveur d'origine ajoute un en-t�te 430 <code>Vary</code> pour indiquer quels en-t�tes doivent �tre pris 431 en compte par un cache pour d�terminer si deux variantes sont 432 diff�rentes l'une de l'autre.</p> 433 434 <p>Si par exemple, une r�ponse est re�ue avec l'en-t�te Vary suivant,</p> 435 436 <div class="example"><p><code> 437Vary: negotiate,accept-language,accept-charset 438 </code></p></div> 439 440 <p><code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> ne servira aux demandeurs que le contenu 441 mis en cache qui correspond au contenu des en-t�tes accept-language et 442 accept-charset de la requ�te originale.</p> 443 444 <p>Plusieurs variantes d'un contenu peuvent �tre mises en cache 445 simultan�ment ; <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> utilise l'en-t�te 446 <code>Vary</code> et les valeurs correspondantes des en-t�tes de 447 la requ�te sp�cifi�s dans ce dernier pour 448 d�terminer quelle variante doit �tre servie au client.</p> 449 450 451 452 <h3><a name="disk" id="disk">Mise en cache sur disque</a></h3> 453 454 455 <p>Le module <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> s'appuie sur des 456 impl�mentations de stockage en arri�re-plan sp�cifiques pour g�rer 457 le cache ; � ce titre, <code class="module"><a href="/mod/mod_cache_disk.html">mod_cache_disk</a></code> fournit le 458 support de la mise en cache sur disque.</p> 459 460 <p>En g�n�ral, le module se configure comme suit :</p> 461 462 <pre class="prettyprint lang-config">CacheRoot "/var/cache/apache/" 463CacheEnable disk / 464CacheDirLevels 2 465CacheDirLength 1</pre> 466 467 468 <p>Il est important de savoir que, les fichiers mis en cache �tant stock�s 469 localement, la mise en cache par l'interm�diaire du syst�me d'exploitation 470 sera en g�n�ral aussi appliqu�e � leurs acc�s. Si bien que m�me si les 471 fichiers sont stock�s sur disque, s'il font l'objet d'acc�s fr�quents, 472 il est probable que le syst�me d'exploitation s'appliquera � ce qu'ils 473 soient servis � partir de la m�moire.</p> 474 475 476 477 <h3>Comprendre le stockage dans le cache</h3> 478 479 480 <p>Pour stocker des entit�s dans le cache, 481 le module <code class="module"><a href="/mod/mod_cache_disk.html">mod_cache_disk</a></code> cr�e une empreinte (hash) de 22 482 caract�res de l'URL qui a fait l'objet d'une requ�te. Cette empreinte 483 comprend le nom d'h�te, le protocole, le port, le chemin et tout argument 484 de type CGI associ� � l'URL, ainsi que les �l�ments 485 sp�cifi�s dans l'en-t�te Vary afin d'�tre sur que plusieurs URLs 486 n'interf�rent pas entre elles.</p> 487 488 <p>Chaque position de l'empreinte peut contenir un caract�re 489 choisi parmi 64 caract�res diff�rents, il y a donc 490 64^22 possibilit�s pour une empreinte. Par exemple, une URL peut poss�der 491 l'empreinte <code>xyTGxSMO2b68mBCykqkp1w</code>. Cette empreinte est 492 utilis�e pour pr�fixer les noms de fichiers sp�cifiques � cette URL � 493 l'int�rieur du cache; cependant, elle est tout d'abord plac�e dans les 494 r�pertoires du cache selon les directives 495 <code class="directive"><a href="/mod/mod_cache_disk.html#cachedirlevels">CacheDirLevels</a></code> et 496 <code class="directive"><a href="/mod/mod_cache_disk.html#cachedirlength">CacheDirLength</a></code>.</p> 497 498 <p>La directive 499 <code class="directive"><a href="/mod/mod_cache_disk.html#cachedirlevels">CacheDirLevels</a></code> 500 d�finit le nombre de niveaux de sous-r�pertoires, et 501 <code class="directive"><a href="/mod/mod_cache_disk.html#cachedirlength">CacheDirLength</a></code> 502 le nombre de caract�res composant le nom des sous-r�pertoires. Dans 503 l'exemple donn� plus haut, l'empreinte se trouvera � : 504 <code>/var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w</code>.</p> 505 506 <p>Cette technique a pour but principal de r�duire le nombre de 507 sous-r�pertoires ou de fichiers contenus dans un r�pertoire particulier, 508 car le fonctionnement de la plupart des syst�mes de fichiers est ralenti 509 quand ce nombre augmente. Avec la valeur "1" pour la directive 510 <code class="directive"><a href="/mod/mod_cache_disk.html#cachedirlength">CacheDirLength</a></code>, 511 il peut y avoir au plus 64 sous-r�pertoires � un niveau quelconque. 512 Avec la valeur "2", il peut y en avoir 64 * 64, etc... 513 A moins d'avoir une bonne raison pour ne pas le faire, l'utilisation de 514 la valeur "1" pour la directive 515 <code class="directive"><a href="/mod/mod_cache_disk.html#cachedirlength">CacheDirLength</a></code> 516 est recommand�e.</p> 517 518 <p>Le param�trage de la directive 519 <code class="directive"><a href="/mod/mod_cache_disk.html#cachedirlevels">CacheDirLevels</a></code> 520 d�pend du nombre de fichiers que vous pensez stocker dans le cache. 521 Avec une valeur de "2" comme dans l'exemple donn� plus haut, 522 4096 sous-r�pertoires peuvent �tre cr��s au total. Avec 1 million de 523 fichiers dans le cache, cela �quivaut � environ 245 URLs mises en cache 524 dans chaque r�pertoire.</p> 525 526 <p>Chaque URL n�cessite au moins deux fichiers dans le cache. Ce sont en 527 g�n�ral un fichier ".header", qui contient des meta-informations � propos 528 de l'URL, comme la date de son arriv�e � expiration, 529 et un fichier ".data" qui est la copie exacte du contenu � servir.</p> 530 531 <p>Dans le cas d'un contenu n�goci� via l'en-t�te "Vary", un r�pertoire 532 ".vary" sera cr�� pour l'URL en question. Ce r�pertoire contiendra de 533 multiples fichiers ".data" correspondant aux diff�rents contenus 534 n�goci�s.</p> 535 536 537 <h3>Maintenance du cache sur disque</h3> 538 539 540 <p>Le module <code class="module"><a href="/mod/mod_cache_disk.html">mod_cache_disk</a></code> n'effectue aucune 541 r�gulation de l'espace disque utilis� par le cache, mais s'il 542 s'arr�te en douceur en cas d'erreur disque et se comporte alors 543 comme si le cache n'avait jamais exist�.</p> 544 545 <p>Par contre l'utilitaire 546 <a href="programs/htcacheclean.html">htcacheclean</a> fourni avec 547 httpd 548 vous permet de nettoyer le cache p�riodiquement. 549 D�terminer la fr�quence � laquelle lancer <a href="programs/htcacheclean.html">htcacheclean</a> et la taille souhait�e 550 pour le cache est une t�che relativement complexe et il vous faudra de 551 nombreux essais et erreurs pour arriver � s�lectionner des valeurs 552 optimales.</p> 553 554 <p><a href="programs/htcacheclean.html">htcacheclean</a> op�re selon deux 555 modes. Il peut s'ex�cuter comme d�mon r�sident, ou �tre lanc� 556 p�riodiquement par cron. <a href="programs/htcacheclean.html">htcacheclean</a> peut mettre une heure 557 ou plus pour traiter de tr�s grands caches (plusieurs dizaines de 558 Gigaoctets) et si vous l'ex�cutez � partir de cron, il vous est 559 conseill� de d�terminer la dur�e typique d'un traitement, afin d'�viter 560 d'ex�cuter plusieurs instances � la fois.</p> 561 562 <p>Il est aussi conseill� d'attribuer un niveau de priorit� "nice" 563 appropri� � htcacheclean de fa�on � ce qu'il n'effectue pas trop 564 d'acc�s disque pendant le fonctionnement du serveur.</p> 565 566 <p class="figure"> 567 <img src="images/caching_fig1.gif" alt="" width="600" height="406" /><br /> 568 <a id="figure1" name="figure1"><dfn>Figure 1</dfn></a>: Croissance 569 typique du cache / s�quence de nettoyage.</p> 570 571 <p>Comme <code class="module"><a href="/mod/mod_cache_disk.html">mod_cache_disk</a></code> ne tient pas compte de l'espace 572 utilis� dans le cache, vous devez vous assurer que 573 <a href="programs/htcacheclean.html">htcacheclean</a> est configur� de 574 fa�on � laisser suffisamment d'"espace de croissance" 575 � la suite d'un nettoyage.</p> 576 577 578 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 579<div class="section"> 580<h2><a name="socache-caching" id="socache-caching">Mise en cache d'objets partag�s � deux �tats de forme 581 cl�/valeur</a></h2> 582 583 584 585 <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_authn_socache.html">mod_authn_socache</a></code></li><li><code class="module"><a href="/mod/mod_socache_dbm.html">mod_socache_dbm</a></code></li><li><code class="module"><a href="/mod/mod_socache_dc.html">mod_socache_dc</a></code></li><li><code class="module"><a href="/mod/mod_socache_memcache.html">mod_socache_memcache</a></code></li><li><code class="module"><a href="/mod/mod_socache_shmcb.html">mod_socache_shmcb</a></code></li><li><code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_authn_socache.html#authncachesocache">AuthnCacheSOCache</a></code></li><li><code class="directive"><a href="/mod/mod_ssl.html#sslsessioncache">SSLSessionCache</a></code></li><li><code class="directive"><a href="/mod/mod_ssl.html#sslstaplingcache">SSLStaplingCache</a></code></li></ul></td></tr></table> 586 587 <p>Le serveur HTTP Apache fournit un cache d'objets partag�s de bas 588 niveau pour la mise en cache d'informations comme les sessions SSL 589 ou les donn�es d'authentification dans l'interface <a href="socache.html">socache</a>.</p> 590 591 <p>Pour chaque impl�mentation un module suppl�mentaire est fourni 592 qui offre les services d'arri�re-plan suivants :</p> 593 594 <dl> 595 <dt><code class="module"><a href="/mod/mod_socache_dbm.html">mod_socache_dbm</a></code></dt> 596 <dd>Cache d'objets partag�s bas� sur DBM.</dd> 597 <dt><code class="module"><a href="/mod/mod_socache_dc.html">mod_socache_dc</a></code></dt> 598 <dd>Cache d'objets partag�s bas� sur Distcache.</dd> 599 <dt><code class="module"><a href="/mod/mod_socache_memcache.html">mod_socache_memcache</a></code></dt> 600 <dd>Cache d'objets partag�s bas� sur Memcache.</dd> 601 <dt><code class="module"><a href="/mod/mod_socache_shmcb.html">mod_socache_shmcb</a></code></dt> 602 <dd>Cache d'objets partag�s bas� sur la m�moire partag�e.</dd> 603 </dl> 604 605 <h3><a name="mod_authn_socache-caching" id="mod_authn_socache-caching">Mise en cache des donn�es d'authentification</a></h3> 606 607 608 <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_authn_socache.html">mod_authn_socache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_authn_socache.html#authncachesocache">AuthnCacheSOCache</a></code></li></ul></td></tr></table> 609 610 <p>Le module <code class="module"><a href="/mod/mod_authn_socache.html">mod_authn_socache</a></code> permet la mise en 611 cache des donn�es issues d'une authentification, diminuant ainsi 612 la charge des serveurs d'authentification en arri�re-plan.</p> 613 614 615 616 <h3><a name="mod_ssl-caching" id="mod_ssl-caching">Mise en cache des sessions SSL</a></h3> 617 618 619 <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_ssl.html">mod_ssl</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_ssl.html#sslsessioncache">SSLSessionCache</a></code></li><li><code class="directive"><a href="/mod/mod_ssl.html#sslstaplingcache">SSLStaplingCache</a></code></li></ul></td></tr></table> 620 621 <p>Le module <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> utilise l'interface 622 <code>socache</code> pour fournir un cache de session et un cache 623 de base.</p> 624 625 626 627 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 628<div class="section"> 629<h2><a name="file-caching" id="file-caching">Mise en cache � base de fichiers sp�cialis�s</a></h2> 630 631 632 633 <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_file_cache.html">mod_file_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_file_cache.html#cachefile">CacheFile</a></code></li><li><code class="directive"><a href="/mod/mod_file_cache.html#mmapfile">MMapFile</a></code></li></ul></td></tr></table> 634 635 <p>Sur les plateformes o� le syst�me de fichiers peut �tre lent, ou 636 lorsque les descripteurs de fichiers sont gourmands en ressources, 637 il est possible de pr�charger des fichiers en m�moire au d�marrage 638 du serveur.</p> 639 640 <p>Sur les syst�mes o� l'ouverture des fichiers est lente, il est 641 possible d'ouvrir le fichier au d�marrage du serveur et de mettre en 642 cache le descripteur de fichier. Ces options peuvent vous aider sur 643 les syst�mes o� l'acc�s aux fichiers statiques est lent.</p> 644 645 <h3><a name="filehandle" id="filehandle">Mise en cache des descripteurs de fichier</a></h3> 646 647 648 <p>Le processus d'ouverture d'un fichier peut �tre en soi une 649 source de ralentissement, en particulier sur les syst�mes de 650 fichiers sur le r�seau. httpd permet d'�viter ce ralentissement en 651 maintenant un cache des descripteurs de fichiers ouverts pour les 652 fichiers souvent servis. Actuellement, httpd fournit une seule 653 impl�mentation de mise en cache des descripteurs de fichiers.</p> 654 655 <h4>CacheFile</h4> 656 657 658 <p>La forme la plus basique de mise en cache que propose httpd 659 est la mise en cache des descripteurs de fichiers fournie par le 660 module <code class="module"><a href="/mod/mod_file_cache.html">mod_file_cache</a></code>. Plut�t que de mettre en 661 cache le contenu des fichiers, ce cache maintient une table des 662 descripteurs de fichiers ouverts. Les fichiers devant faire 663 l'objet d'une mise en cache de ce type sont sp�cifi�s dans le 664 fichier de configuration via la directive <code class="directive"><a href="/mod/mod_file_cache.html#cachefile">CacheFile</a></code>.</p> 665 666 <p>La directive <code class="directive"><a href="/mod/mod_file_cache.html#cachefile">CacheFile</a></code> informe httpd 667 qu'il doit ouvrir le fichier lors de son d�marrage et qu'il doit 668 r�utiliser le descripteur de fichier mis en cache pour tous les 669 acc�s futurs � ce fichier.</p> 670 671 <pre class="prettyprint lang-config">CacheFile /usr/local/apache2/htdocs/index.html</pre> 672 673 674 <p>Si vous d�sirez mettre en cache un grand nombre de fichiers 675 de cette mani�re, vous devez vous assurer que le nombre maximal 676 de fichiers ouverts pour votre syst�me d'exploitation est d�fini 677 � une valeur suffisante.</p> 678 679 <p>Bien que l'utilisation de la directive <code class="directive"><a href="/mod/mod_file_cache.html#cachefile">CacheFile</a></code> n'entra�ne pas de 680 mise en cache du contenu du fichier proprement dit, elle 681 implique que si le fichier est modifi� pendant l'ex�cution du 682 serveur, ces modifications ne seront pas prises en compte. Le 683 fichier sera toujours servi dans l'�tat o� il se trouvait au 684 moment du d�marrage du serveur.</p> 685 686 <p>Si le fichier est supprim� pendant l'ex�cution du serveur, ce 687 dernier conservera le descripteur de fichier ouvert associ� et 688 servira le fichier dans l'�tat o� il se trouvait au 689 moment du d�marrage du serveur. Cela signifie aussi que m�me si 690 le fichier a �t� supprim�, et n'appara�t donc plus dans le 691 syst�me de fichiers, l'espace disque lib�r� ne sera disponible 692 qu'une fois le serveur httpd arr�t� et donc le descripteur de 693 fichier ferm�.</p> 694 695 696 697 698 <h3><a name="inmemory" id="inmemory">In-Memory Caching</a></h3> 699 700 701 <p>Servir un contenu directement depuis la m�moire syst�me est 702 universellement reconnu comme la m�thode la plus rapide. Lire des fichiers 703 depuis un contr�leur de disque ou pire, depuis un r�seau distant est plus 704 lent de plusieurs ordres de grandeur. Les contr�leurs de disque r�alisent 705 en g�n�ral des op�rations m�caniques, et l'acc�s au r�seau est limit� par la 706 bande passante dont vous disposez. Par contre, les temps d'acc�s � la 707 m�moire sont de l'ordre de la nano-seconde.</p> 708 709 <p>Cependant la m�moire syst�me n'est pas bon march�; � capacit� �gale, 710 c'est de loin le type de stockage le plus co�teux et il est important de 711 s'assurer qu'elle est utilis�e efficacement. Le fait de mettre en cache 712 des fichiers en m�moire diminue d'autant la quantit� de m�moire syst�me 713 disponible. Comme nous le verrons plus loin, ce n'est pas un probl�me en 714 soi dans le cas de la mise en cache par l'interm�diaire du syst�me 715 d'exploitation, mais si l'on utilise la mise en cache en m�moire propre � 716 httpd, il faut prendre garde � ne pas allouer trop de m�moire au cache. 717 Sinon le syst�me sera contraint d'utiliser le swap, ce qui d�gradera 718 sensiblement les performances.</p> 719 720 <h4>Mise en cache par l'interm�diaire du syst�me d'exploitation</h4> 721 722 723 <p>Dans la plupart des syst�mes d'exploitation modernes, c'est le noyau 724 qui g�re directement la mise en cache en m�moire des donn�es relatives 725 aux fichiers. C'est une fonctionnalit� puissante, et les syst�mes 726 d'exploitation s'en acquittent fort bien pour la plus grande partie. 727 Consid�rons par exemple, dans le cas de Linux, la diff�rence entre le 728 temps n�cessaire � la premi�re lecture d'un fichier et le temps 729 n�cessaire � sa deuxi�me lecture;</p> 730 731 <div class="example"><pre>colm@coroebus:~$ time cat testfile > /dev/null 732real 0m0.065s 733user 0m0.000s 734sys 0m0.001s 735colm@coroebus:~$ time cat testfile > /dev/null 736real 0m0.003s 737user 0m0.003s 738sys 0m0.000s</pre></div> 739 740 <p>M�me pour ce petit fichier, il y a une grande diff�rence entre les 741 temps n�cessaires pour lire le fichier. Ceci est du au fait que le 742 noyau a mis en cache le contenu du fichier en m�moire.</p> 743 744 <p>Du fait de toujours pouvoir disposer de m�moire syst�me, vous pouvez 745 �tre assur� qu'il y aura de plus en plus de contenus de fichiers stock�s 746 dans ce cache. Ceci peut s'av�rer une m�thode de mise en cache en m�moire 747 tr�s efficace, et ne n�cessite aucune configuration suppl�mentaire 748 de httpd.</p> 749 750 <p>De plus, comme le syst�me d'exploitation sait si des fichiers 751 ont �t� 752 supprim�s ou modifi�s, il peut effacer automatiquement des contenus de 753 fichiers du cache lorsque cela s'av�re n�cessaire. Ceci constitue un gros 754 avantage par rapport � la mise en cache en m�moire 755 de httpd qui n'a 756 aucune possibilit� de savoir si un fichier a �t� modifi�.</p> 757 758 759 <p>En d�pit des performances et des avantages de la mise en cache 760 automatique par le syst�me d'exploitation, la mise en cache en m�moire 761 peut �tre effectu�e plus efficacement par httpd dans certaines 762 circonstances.</p> 763 764 <h4>Mise en cache � l'aide de la directive MMapFile</h4> 765 766 767 <p>La directive <code class="directive"><a href="/mod/mod_file_cache.html#mmapfile">MMapFile</a></code> 768 fournie par le module <code class="module"><a href="/mod/mod_file_cache.html">mod_file_cache</a></code> vous permet de 769 demander � httpd de charger un contenu de fichier statique en m�moire 770 lors de son d�marrage (� l'aide de l'appel 771 syst�me mmap). httpd 772 utilisera le contenu charg� en m�moire pour satisfaire ult�rieurement 773 toutes les demandes d'acc�s � ce fichier.</p> 774 775 <pre class="prettyprint lang-config">MMapFile /usr/local/apache2/htdocs/index.html</pre> 776 777 778 <p>Comme dans le cas de la directive 779 <code class="directive"><a href="/mod/mod_file_cache.html#cachefile">CacheFile</a></code>, toute 780 modification du fichier ne sera plus prise en compte par httpd une fois 781 ce dernier d�marr�.</p> 782 783 <p> La directive 784 <code class="directive"><a href="/mod/mod_file_cache.html#mmapfile">MMapFile</a></code> ne gardant 785 pas la trace de la quantit� de m�moire qu'elle alloue, vous devez prendre 786 garde de ne pas en abuser. Chaque processus enfant de httpd utilisant 787 sa propre r�plique de la m�moire allou�e, il est donc d'une importance 788 critique de s'assurer que les fichiers charg�s ne sont pas d'une taille 789 trop importante afin d'�pargner au syst�me l'utilisation du swap.</p> 790 791 792 793 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 794<div class="section"> 795<h2><a name="security" id="security">Consid�rations sur la s�curit�</a></h2> 796 797 798 <h3>Autorisation et contr�le d'acc�s</h3> 799 800 801 <p>Utiliser <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> revient sensiblement � la m�me 802 chose qu'avoir un mandataire inverse int�gr� (reverse-proxy). Les requ�tes 803 seront servies par le module de mise en cache sauf si ce dernier 804 d�termine qu'un processus d'arri�re-plan doit �tre appel�. La mise en 805 cache de ressources locales modifie consid�rablement le mod�le de 806 s�curit� de httpd.</p> 807 808 <p>Comme le parcours de la hi�rarchie d'un syst�me de fichiers pour 809 examiner le contenu d'�ventuels fichiers 810 <code>.htaccess</code> serait une op�ration tr�s co�teuse en ressources, 811 annulant partiellement de ce fait l'int�r�t de la mise en cache 812 (acc�l�rer le traitement des requ�tes), 813 <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> ne se pr�occupe pas de savoir s'il a 814 l'autorisation de servir une entit� mise en cache. En d'autres termes, 815 si <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> a mis en cache un certain contenu, ce 816 dernier sera servi � partir du cache tant qu'il ne sera pas arriv� � 817 expiration.</p> 818 819 <p>Si par exemple, votre configuration autorise l'acc�s � une ressource 820 en fonction de l'adresse IP, vous devez vous assurer que ce contenu n'est 821 pas mis en cache. Ceci est possible en utilisant la directive 822 <code class="directive"><a href="/mod/mod_cache.html#cachedisable">CacheDisable</a></code>, ou le module 823 <code class="module"><a href="/mod/mod_expires.html">mod_expires</a></code>. Livr� � lui-m�me, 824 <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> - pratiquement comme un mandataire inverse - 825 mettrait en cache le contenu lors de son service, et le servirait ensuite 826 � tout client, vers n'importe quelle adresse IP.</p> 827 828 <p>Lorsque la directive <code class="directive"><a href="/mod/mod_cache.html#cachequickhandler">CacheQuickHandler</a></code> est d�finie � 829 <code>Off</code>, toutes les phases du traitement de la requ�te 830 sont ex�cut�es et le mod�le de s�curit� reste le m�me.</p> 831 832 833 834 <h3>Piratages locaux</h3> 835 836 837 <p>Etant donn� que les requ�tes des utilisateurs finaux peuvent �tre 838 servies depuis le cache, ce dernier est une cible potentielle pour ceux 839 qui veulent d�figurer un contenu ou interf�rer avec lui. Il est important 840 de garder � l'esprit que l'utilisateur sous lequel tourne 841 httpd doit 842 toujours avoir l'acc�s en �criture dans le cache. Ceci est en contraste 843 total avec la recommandation usuelle d'interdire � l'utilisateur sous 844 lequel tourne Apache 845 l'acc�s en �criture � tout contenu.</p> 846 847 <p>Si l'utilisateur sous lequel tourne Apache est compromis, 848 par exemple � cause d'une 849 faille de s�curit� dans un processus CGI, il est possible que le cache 850 fasse l'objet d'une attaque. Il est relativement ais� d'ins�rer ou de 851 modifier une entit� dans le cache en utilisant le module 852 <code class="module"><a href="/mod/mod_cache_disk.html">mod_cache_disk</a></code>.</p> 853 854 <p>Cela repr�sente un risque relativement �l�v� par rapport aux autres 855 types d'attaques qu'il est possible de mener sous l'utilisateur apache. 856 Si vous utilisez <code class="module"><a href="/mod/mod_cache_disk.html">mod_cache_disk</a></code>, vous devez garder ceci 857 � l'esprit : effectuez toujours les mises � jour de 858 httpdquand des 859 correctifs de s�curit� sont annonc�s et ex�cutez les processus CGI sous 860 un utilisateur autre qu'apache en utilisant 861 <a href="suexec.html">suEXEC</a> dans la mesure du possible.</p> 862 863 864 865 <h3>Empoisonnement du cache (Cache Poisoning)</h3> 866 867 868 <p>Si vous utilisez httpd comme serveur mandataire avec mise en cache, 869 vous vous exposez aussi � un �ventuel "Empoisonnement du 870 cache" (Cache poisoning). L'empoisonnement du cache est un terme g�n�ral 871 pour d�signer les attaques au cours desquelles l'attaquant fait en sorte 872 que le serveur mandataire renvoie � un contenu incorrect (et souvent 873 ind�sirable) suite � en provenance du serveur d'arri�re-plan. 874 </p> 875 876 <p>Par exemple, si les serveur DNS qu'utilise votre syst�me o� tourne 877 httpd sont vuln�rables � l'empoisonnement du cache des DNS, un attaquant 878 pourra contr�ler vers o� httpd se connecte lorsqu'il demande un contenu 879 depuis le serveur d'origine. 880 Un autre exemple est constitu� par les attaques ainsi nomm�es 881 "Dissimulation de requ�tes HTTP" (HTTP request-smuggling).</p> 882 883 <p>Ce document n'est pas le bon endroit pour une discussion approfondie 884 � propos de la Dissimulation de requ�tes HTTP (utilisez plut�t votre 885 moteur de recherche favori); il est cependant important de savoir qu'il 886 est possible d'�laborer une s�rie de requ�tes, et d'exploiter une 887 vuln�rabilit� d'un serveur web d'origine de telle fa�on que l'attaquant 888 puisse contr�ler enti�rement le contenu renvoy� par le mandataire.</p> 889 890 891 <h3>D�ni de Service / Cachebusting</h3> 892 893 894 <p>Le m�canisme utilis� via l'en-t�te Vary permet de mettre en 895 cache simultan�ment plusieurs variantes d'une ressource avec la 896 m�me URL. Le cache s�lectionne la variante correcte � envoyer au 897 client en fonction des valeurs d'en-t�te fournies par ce dernier. 898 Ce m�canisme peut devenir un probl�me lorsqu'on tente d'appliquer 899 le m�canisme des variantes � un en-t�te connu pour pouvoir 900 poss�der un grand nombre de valeurs 901 possibles en utilisation normal, comme par exemple l'en-t�te 902 <code>User-Agent</code>. En fonction de la popularit� du site web, 903 des milliers ou m�me des millions d'entr�es de cache dupliqu�es 904 peuvent �tre cr��es pour la m�me URL, submergeant les autres 905 entr�es du cache.</p> 906 907 <p>Dans d'autres cas, il peut �tre n�cessaire de modifier l'URL 908 d'une ressource particuli�re � chaque requ�te, en g�n�ral en lui 909 ajoutant une cha�ne "cachebuster". Si ce contenu est d�clar� comme 910 pouvant �tre mis en cache par un serveur avec une dur�e de 911 fra�cheur significative, ces entr�es peuvent submerger les entr�es 912 l�gitimes du cache. Alors que <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> fournit 913 une directive <code class="directive"><a href="/mod/mod_cache.html#cacheignoreurlsessionidentifiers">CacheIgnoreURLSessionIdentifiers</a></code>, 914 cette derni�re doit �tre utilis�e avec prudence pour s'assurer que 915 les caches du navigateur ou du mandataire le plus proche 916 (downstream proxy) ne sont pas victimes du m�me probl�me de D�ni de 917 service.</p> 918 919 </div></div> 920<div class="bottomlang"> 921<p><span>Langues Disponibles: </span><a href="/en/caching.html" hreflang="en" rel="alternate" title="English"> en </a> | 922<a href="/fr/caching.html" title="Fran�ais"> fr </a> | 923<a href="/tr/caching.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a></p> 924</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div> 925<script type="text/javascript"><!--//--><![CDATA[//><!-- 926var comments_shortname = 'httpd'; 927var comments_identifier = 'http://httpd.apache.org/docs/2.4/caching.html'; 928(function(w, d) { 929 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 930 d.write('<div id="comments_thread"><\/div>'); 931 var s = d.createElement('script'); 932 s.type = 'text/javascript'; 933 s.async = true; 934 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 935 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 936 } 937 else { 938 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 939 } 940})(window, document); 941//--><!]]></script></div><div id="footer"> 942<p class="apache">Copyright 2014 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> 943<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.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[//><!-- 944if (typeof(prettyPrint) !== 'undefined') { 945 prettyPrint(); 946} 947//--><!]]></script> 948</body></html>