caching.xml.fr revision 78f97ce162b66a0dbfd7af4dcd9984f162569b04
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor<?xml version="1.0" encoding="ISO-8859-1" ?>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor<!DOCTYPE manualpage SYSTEM "style/manualpage.dtd">
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor<?xml-stylesheet type="text/xsl" href="style/manual.fr.xsl"?>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor<!-- French translation : Lucien GENTIS -->
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor<!-- Reviewed by : Vincent Deffontaines -->
424edfaa5b21b17d739ebefa4c16966ed6310067lgentis<!-- English Revision : 1029134 -->
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor<!--
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Licensed to the Apache Software Foundation (ASF) under one or more
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor contributor license agreements. See the NOTICE file distributed with
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor this work for additional information regarding copyright ownership.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor The ASF licenses this file to You under the Apache License, Version 2.0
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor (the "License"); you may not use this file except in compliance with
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor the License. You may obtain a copy of the License at
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor http://www.apache.org/licenses/LICENSE-2.0
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Unless required by applicable law or agreed to in writing, software
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor distributed under the License is distributed on an "AS IS" BASIS,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor See the License for the specific language governing permissions and
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor limitations under the License.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor-->
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor<manualpage metafile="caching.xml.meta">
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Guide de la mise en cache</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <summary>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Ce document compl&egrave;te la documentation de r&eacute;f&eacute;rence des modules
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <module>mod_cache</module>, <module>mod_cache_disk</module>,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_file_cache</module> et du programme <a
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor href="programs/htcacheclean.html">htcacheclean</a>.
a9db829bebc5339233a3242f6742816425751d15lgentis Il d&eacute;crit l'utilisation des fonctionnalit&eacute;s de mise en
a9db829bebc5339233a3242f6742816425751d15lgentis cache du serveur HTTP Apache
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pour acc&eacute;l&eacute;rer les services web et proxy, tout en &eacute;vitant les probl&egrave;mes
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor courants et les erreurs de configuration.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </summary>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section id="introduction">
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Introduction</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Depuis la version 2.2 du serveur HTTP Apache, les modules
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_cache</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor et <module>mod_file_cache</module> ne sont plus jug&eacute;s exp&eacute;rimentaux
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor et on consid&egrave;re qu'ils peuvent &ecirc;tre utilis&eacute;s en production. Ces
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor architectures de mise en cache constituent un puissant concept
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d'acc&eacute;l&eacute;ration de la gestion HTTP, tant comme serveur web originel
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor que comme mandataire.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
fe78e9e02260dce00a6670d11efd8df56d535980lgentis <p>Le module <module>mod_cache</module> et son module de soutien
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <module>mod_cache_disk</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor permettent une mise en cache intelligente du point de vue HTTP.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Le contenu proprement dit est stock&eacute; dans le cache,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor et mod_cache tente d'honorer tous les en-t&ecirc;tes HTTP et les options
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor qui d&eacute;finissent la possibilit&eacute; de mise en cache du contenu. Il g&egrave;re non
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor seulement le contenu local, mais aussi le contenu mandat&eacute;.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_cache</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor est con&ccedil;u pour des configurations de mise en cache simples ou complexes,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor dans lesquels vous traitez de contenu mandat&eacute;, de contenu local dynamique
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ou avez besoin d'acc&eacute;l&eacute;rer l'acc&egrave;s &agrave; des fichiers locaux qui sont modifi&eacute;s
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor au cours du temps.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Le module <module>mod_file_cache</module> quant &agrave; lui, constitue une
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor forme de mise en cache plus basique, mais quelques fois int&eacute;ressante.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Plut&ocirc;t que de g&eacute;rer la complexit&eacute; de s'assurer de mani&egrave;re active de la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor possibilit&eacute; de mise en cache d'URLs,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_file_cache</module> fournit des m&eacute;thodes pour la gestion
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor et l'&eacute;dition de fichiers en m&eacute;moire afin de maintenir un cache de fichiers
a9db829bebc5339233a3242f6742816425751d15lgentis dans l'&eacute;tat o&ugrave; ils &eacute;taient la derni&egrave;re
a9db829bebc5339233a3242f6742816425751d15lgentis fois qu'httpd a d&eacute;marr&eacute;.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor En tant que tel, <module>mod_file_cache</module> a &eacute;t&eacute; con&ccedil;u pour am&eacute;liorer
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor le temps d'acc&egrave;s &agrave; des fichiers locaux statiques qui ne sont modifi&eacute;s
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor que rarement.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Etant donn&eacute; que <module>mod_file_cache</module> constitue une
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor impl&eacute;mentation de mise en cache relativement simple, mises &agrave; part les
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor sections sp&eacute;cifiques sur les directives <directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor module="mod_file_cache">CacheFile</directive> et <directive
a1066e2786436743f6791963fb266282c25e1e99lgentis module="mod_file_cache">MMapFile</directive>, les explications fournies
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor dans ce guide concernent l'architecture de mise en cache du
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor module <module>mod_cache</module>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Pour tirer parti efficacement de ce document, les bases de HTTP doivent
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor vous &ecirc;tre famili&egrave;res, et vous devez avoir lu les sections
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <a href="urlmapping.html">Mise en correspondance des
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor URLs avec le syst&egrave;me de fichiers</a> et
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <a href="content-negotiation.html">N&eacute;gociation sur le contenu</a>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor du guide de l'utilisateur.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section id="overview">
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Vue d'ensemble de la mise en cache</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <related>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <modulelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_cache</module>
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <module>mod_cache_disk</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_file_cache</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </modulelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directivelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheEnable</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheDisable</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_file_cache">CacheFile</directive>
a1066e2786436743f6791963fb266282c25e1e99lgentis <directive module="mod_file_cache">MMapFile</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="core">UseCanonicalName</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_negotiation">CacheNegotiatedDocs</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </directivelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </related>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p><module>mod_cache</module> peut faire intervenir deux phases
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor principales pendant la dur&eacute;e de vie d'une requ&ecirc;te.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor En premier lieu, <module>mod_cache</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor est un module de mise en correspondance d'URLs, ce qui signifie que si
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor une URL a &eacute;t&eacute; mise en cache, et que la version du cache de cette URL n'est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pas arriv&eacute;e &agrave; expiration, la requ&ecirc;te sera trait&eacute;e directement par
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_cache</module>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Ceci entra&icirc;ne que toutes autres actions qui se d&eacute;rouleraient normalement
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor au cours du processus de traitement d'une requ&ecirc;te -- par exemple un
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor traitement effectu&eacute; par <module>mod_proxy</module>, ou
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_rewrite</module> --
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ne seront pas effectu&eacute;es. Mais c'est justement l'int&eacute;r&ecirc;t
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor de la mise en cache pr&eacute;alable du contenu.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si l'URL ne se trouve pas dans le cache, <module>mod_cache</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor va ajouter un <a href="filter.html">filtre</a> au traitement de la requ&ecirc;te.
a9db829bebc5339233a3242f6742816425751d15lgentis Une fois le contenu localis&eacute; par httpd selon la conception courante, le
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor filtre sera ex&eacute;cut&eacute; en m&ecirc;me temps que le contenu sera servi.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor S'il est d&eacute;termin&eacute; que le contenu peut &ecirc;tre mis en cache,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor il sera sauvegard&eacute; dans le cache pour une utilisation future.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si l'URL se trouve dans le cache, mais est arriv&eacute;e &agrave; expiration,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor le filtre est quand-m&ecirc;me ajout&eacute;, mais <module>mod_cache</module> va cr&eacute;er
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor une requ&ecirc;te conditionnelle en arri&egrave;re-plan, pour d&eacute;terminer si la version
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor du cache est encore &agrave; jour. Si la version du cache est encore &agrave; jour, ses
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor meta-informations seront mises &agrave; jour et la requ&ecirc;te sera servie &agrave; partir du
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor cache. Si la version du contenu n'est plus &agrave; jour, elle sera supprim&eacute;e et le
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor filtre va sauvegarder le contenu mis &agrave; jour dans le cache
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor au moment o&ugrave; il sera servi.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Am&eacute;lioration du taux de pr&eacute;sence dans le cache</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Lors de la mise en cache de contenu g&eacute;n&eacute;r&eacute; localement, le
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor positionnement de la directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="core">UseCanonicalName</directive> &agrave;
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <code>On</code> peut am&eacute;liorer de mani&egrave;re spectaculaire le taux de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pr&eacute;sence dans le cache. Ceci est du au fait que le nom d'h&ocirc;te de l'h&ocirc;te
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor virtuel qui sert le contenu constitue une partie de la cl&eacute; de cache.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Avec <directive module="core">UseCanonicalName</directive> positionn&eacute;e
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor &agrave; <code>On</code>,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor les h&ocirc;tes virtuels poss&eacute;dant plusieurs noms de serveur ou alias ne
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor g&eacute;n&eacute;reront pas d'entit&eacute;s de cache diff&eacute;rentes, et le contenu sera mis en
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor cache en faisant r&eacute;f&eacute;rence au nom d'h&ocirc;te canonique.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Les documents mis en cache ne seront servis qu'en r&eacute;ponse &agrave; des
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor requ&ecirc;tes de type URL, car la mise en cache est effectu&eacute;e lors de la phase
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor de traduction de l'URL en nom de fichier.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor En g&eacute;n&eacute;ral, cela n'a que peu d'effet, &agrave; moins que vous n'utilisiez les
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <a href="howto/ssi.html">Inclusions C&ocirc;t&eacute; Serveur (SSI)</a>;</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <pre>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor&lt;!-- L'inclusion suivante peut &ecirc;tre mise en cache --&gt;
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor&lt;!--#include virtual="/footer.html" --&gt;
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor&lt;!-- L'inclusion suivante ne peut pas &ecirc;tre mise en cache --&gt;
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor&lt;!--#include file="/path/to/footer.html" --&gt;</pre>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si vous utilisez les SSI, et voulez b&eacute;n&eacute;ficier de la vitesse de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor service depuis le cache, vous devez utiliser des inclusions de type
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <code>virtual</code>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>P&eacute;riodes d'expiration</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>La p&eacute;riode d'expiration par d&eacute;faut pour les entit&eacute;s du cache est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d'une heure; elle peut cependant &ecirc;tre facilement modifi&eacute;e &agrave; l'aide de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor la directive <directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor module="mod_cache">CacheDefaultExpire</directive>. Cette valeur par
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d&eacute;faut n'est utilis&eacute;e que lorsque la source originale du contenu ne
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pr&eacute;cise pas de p&eacute;riode d'expiration ou d'heure de derni&egrave;re
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor modification.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si une r&eacute;ponse ne contient pas d'en-t&ecirc;te <code>Expires</code> mais
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor inclut un en-t&ecirc;te <code>Last-Modified</code>, <module>mod_cache</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor peut d&eacute;duire une p&eacute;riode d'expiration en se basant sur la valeur de la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor directive <directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor module="mod_cache">CacheLastModifiedFactor</directive>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>La p&eacute;riode d'expiration des contenus locaux peut &ecirc;tre ajust&eacute;e finement
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor en utilisant le module <module>mod_expires</module>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>On peut aussi contr&ocirc;ler la p&eacute;riode d'expiration maximale en utilisant
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor la directive <directive module="mod_cache">CacheMaxExpire</directive>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Guide succinct des requ&ecirc;tes conditionnelles</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Lorsqu'un contenu est arriv&eacute; &agrave; expiration dans le cache et fait
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor l'objet d'une nouvelle demande d'acc&egrave;s, plut&ocirc;t que traiter directement
a9db829bebc5339233a3242f6742816425751d15lgentis la requ&ecirc;te originale, httpd pr&eacute;f&egrave;re utiliser une
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor requ&ecirc;te conditionnelle.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>HTTP propose toute une panoplie d'en-t&ecirc;tes qui permettent &agrave; un client,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ou au cache de distinguer les diff&eacute;rentes versions d'un m&ecirc;me contenu. Par
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor exemple, si une ressource a &eacute;t&eacute; servie avec un en-t&ecirc;te "Etag:", il est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor possible de cr&eacute;er une requ&ecirc;te conditionnelle contenant un en-t&ecirc;te
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor "If-None-Match:". Si une ressource a &eacute;t&eacute; servie avec un en-t&ecirc;te
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor "Last-Modified:", il est possible de cr&eacute;er une requ&ecirc;te conditionnelle
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor contenant un en-t&ecirc;te "If-Modified-Since:", etc....</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Lorsqu'une telle requ&ecirc;te conditionnelle est cr&eacute;&eacute;e, la reponse diff&egrave;re
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor selon que le contenu satisfait ou non aux conditions. Si une requ&ecirc;te est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor cr&eacute;&eacute;e avec un en-t&ecirc;te "If-Modified-Since:", et le contenu n'a pas &eacute;t&eacute;
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor modifi&eacute; depuis le moment indiqu&eacute; dans la requ&ecirc;te, alors un laconique
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor "304 Not Modified" est retourn&eacute;.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si le contenu a &eacute;t&eacute; modifi&eacute;, il est servi comme si la requ&ecirc;te n'avait
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pas &eacute;t&eacute; conditionnelle &agrave; l'origine.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Les b&eacute;n&eacute;fices des requ&ecirc;tes conditionnelles pour ce qui concerne la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor mise en cache sont de deux sortes. Premi&egrave;rement, quand une telle requ&ecirc;te
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor est envoy&eacute;e au processus en arri&egrave;re-plan, il sera ais&eacute; de d&eacute;terminer
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor si le contenu que devra servir le processus en arri&egrave;re-plan correspond
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor au contenu stock&eacute; dans le cache, sans &ecirc;tre oblig&eacute; de transmettre la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor totalit&eacute; de la ressource.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Deuxi&egrave;mement, les requ&ecirc;tes conditionnelles sont en g&eacute;n&eacute;ral moins
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor co&ucirc;teuses en ressources pour le processus en arri&egrave;re-plan.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Pour ce qui est des fichiers
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor statiques, l'action type est un appel &agrave; <code>stat()</code> ou un appel
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor syst&egrave;me similaire, pour d&eacute;terminer si la taille du fichier ou sa date de
a9db829bebc5339233a3242f6742816425751d15lgentis modification ont chang&eacute;. Ainsi, m&ecirc;me si httpd met en cache le contenu
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor local, un contenu arriv&eacute; &agrave; expiration pourra &ecirc;tre servi plus rapidement
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor depuis le cache s'il n'a pas &eacute;t&eacute; modifi&eacute;, parce que la lecture depuis le
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor cache est plus rapide que la lecture depuis le processus en arri&egrave;re-plan
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor (&agrave; comparer &agrave; la diff&eacute;rence de vitesse entre la lecture depuis un cache en
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin m&eacute;moire avec <module>mod_cache_disk</module> et la lecture depuis un disque).</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Que peut-on mettre en cache ?</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
a9db829bebc5339233a3242f6742816425751d15lgentis <p>Comme mentionn&eacute; plus haut, les deux styles de mise en
a9db829bebc5339233a3242f6742816425751d15lgentis cache de httpd
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fonctionnent diff&eacute;remment; la mise en cache de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_file_cache</module> conserve les contenus des fichiers
a9db829bebc5339233a3242f6742816425751d15lgentis tels qu'ils &eacute;taient au d&eacute;marrage de httpd. Quand une requ&ecirc;te pour un
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fichier mis en cache par ce module est envoy&eacute;e, elle est intercept&eacute;e
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor et le fichier mis en cache est servi.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>La mise en cache de <module>mod_cache</module>, quant &agrave; elle, est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor plus complexe. Lors du traitement d'une requ&ecirc;te, le module de mise en
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor cache d&eacute;terminera si le contenu peut &ecirc;tre mis en cache, s'il ne l'a
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pas d&eacute;j&agrave; &eacute;t&eacute; auparavant. Les conditions qui permettent de d&eacute;terminer
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor la possibilit&eacute; de mise en cache d'une r&eacute;ponse sont :</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <ol>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <li>La mise en cache doit &ecirc;tre activ&eacute;e pour cette URL. Voir les
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor directives <directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor module="mod_cache">CacheEnable</directive> et <directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor module="mod_cache">CacheDisable</directive>.</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <li>La reponse doit avoir un code de statut HTTP de 200, 203, 300, 301
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ou 410.</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <li>La requ&ecirc;te doit &ecirc;tre de type HTTP GET.</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <li>Si la requ&ecirc;te contient un en-t&ecirc;te "Authorization:", la r&eacute;ponse ne
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor sera pas mise en cache.</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <li>Si la r&eacute;ponse contient un en-t&ecirc;te "Authorization:", elle doit aussi
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor contenir une option "s-maxage", "must-revalidate" ou "public"
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor dans l'en-t&ecirc;te "Cache-Control:".</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ea08352ef148842f2db8c00add52444487c0f638lgentis <li>Si l'URL contient une cha&icirc;ne de requ&ecirc;te
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor (provenant par exemple d'une m&eacute;thode GET de formulaire HTML), elle ne
ea08352ef148842f2db8c00add52444487c0f638lgentis sera pas mise en cache, &agrave; moins que la r&eacute;ponse ne
ea08352ef148842f2db8c00add52444487c0f638lgentis sp&eacute;cifie explicitement un d&eacute;lai d'expiration via un
ea08352ef148842f2db8c00add52444487c0f638lgentis en-t&ecirc;te "Expires:" ou une directive max-age ou s-maxage de
ea08352ef148842f2db8c00add52444487c0f638lgentis l'en-t&ecirc;te "Cache-Control:" comme indiqu&eacute; dans les
ea08352ef148842f2db8c00add52444487c0f638lgentis sections 13.2.1. et 13.9 de la RFC2616.</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <li>Si la r&eacute;ponse a un statut de 200 (OK), elle doit aussi contenir
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor au moins un des en-t&ecirc;tes "Etag", "Last-Modified" ou
ea08352ef148842f2db8c00add52444487c0f638lgentis "Expires", ou une directive max-age ou s-maxage de
ea08352ef148842f2db8c00add52444487c0f638lgentis l'en-t&ecirc;te "Cache-Control:", &agrave; moins que la directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheIgnoreNoLastMod</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ne pr&eacute;cise d'autres contraintes.</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <li>Si la r&eacute;ponse contient l'option "private" dans un en-t&ecirc;te
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor "Cache-Control:", elle ne sera pas mise en cache &agrave; moins que la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheStorePrivate</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ne pr&eacute;cise d'autres contraintes.</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <li>De m&ecirc;me, si la r&eacute;ponse contient l'option "no-store" dans un en-t&ecirc;te
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor "Cache-Control:", elle ne sera pas mise en cache &agrave; moins que la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheStoreNoStore</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor n'ait &eacute;t&eacute; utilis&eacute;e.</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <li>Une r&eacute;ponse ne sera pas mise en cache si elle comporte un en-t&ecirc;te
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor "Vary:" contenant le caract&egrave;re "*" qui correspond &agrave; toute
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor cha&icirc;ne de caract&egrave;res.</li>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </ol>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Qu'est ce qui ne doit pas &ecirc;tre mis en cache ?</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>En bref, tout contenu qui varie beaucoup avec le temps, ou en fonction
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor de particularit&eacute;s de la requ&ecirc;te qui ne sont pas couvertes par la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor n&eacute;gociation HTTP, ne doit pas &ecirc;tre mis en cache.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Un contenu dynamique qui varie en fonction de l'adresse IP du
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor demandeur, ou est modifi&eacute; toutes les 5 minutes, ne devra en g&eacute;n&eacute;ral
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pas &ecirc;tre mis en cache.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si par contre le contenu servi diff&egrave;re en fonction de la valeur de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor divers en-t&ecirc;tes HTTP, il se peut que l'on puisse le mettre en cache
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor intelligemment en utilisant un en-t&ecirc;te "Vary".</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Contenu variable et/ou n&eacute;goci&eacute;</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si <module>mod_cache</module> re&ccedil;oit une r&eacute;ponse contenant un en-t&ecirc;te
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor "Vary", lorsqu'un contenu a &eacute;t&eacute; demand&eacute; par un processus d'arri&egrave;re-plan,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor il va s'efforcer de la traiter intelligemment. Si possible,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_cache</module> va d&eacute;tecter les en-t&ecirc;tes attribu&eacute;s dans la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor r&eacute;ponse "Vary" &agrave; l'occasion des futures demandes, et servir une r&eacute;ponse
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor correcte &agrave; partir du cache.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si par exemple, une r&eacute;ponse est re&ccedil;ue avec l'en-t&ecirc;te Vary suivant,</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorVary: negotiate,accept-language,accept-charset
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p><module>mod_cache</module> ne servira aux demandeurs que le contenu
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor mis en cache qui correspond au contenu des en-t&ecirc;tes accept-language et
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor accept-charset de la requ&ecirc;te originale.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section id="security">
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Consid&eacute;rations sur la s&eacute;curit&eacute;</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Autorisation et contr&ocirc;le d'acc&egrave;s</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Utiliser <module>mod_cache</module> revient sensiblement &agrave; la m&ecirc;me
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor chose qu'avoir un mandataire inverse int&eacute;gr&eacute; (reverse-proxy). Les requ&ecirc;tes
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor seront servies par le module de mise en cache sauf si ce dernier
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d&eacute;termine qu'un processus d'arri&egrave;re-plan doit &ecirc;tre appel&eacute;. La mise en
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor cache de ressources locales modifie consid&eacute;rablement le mod&egrave;le de
a9db829bebc5339233a3242f6742816425751d15lgentis s&eacute;curit&eacute; de httpd.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Comme le parcours de la hi&eacute;rarchie d'un syst&egrave;me de fichiers pour
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor examiner le contenu d'&eacute;ventuels fichiers
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <code>.htaccess</code> serait une op&eacute;ration tr&egrave;s co&ucirc;teuse en ressources,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor annulant partiellement de ce fait l'int&eacute;r&ecirc;t de la mise en cache
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor (acc&eacute;l&eacute;rer le traitement des requ&ecirc;tes),
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_cache</module> ne se pr&eacute;occupe pas de savoir s'il a
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor l'autorisation de servir une entit&eacute; mise en cache. En d'autres termes,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor si <module>mod_cache</module> a mis en cache un certain contenu, ce
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor dernier sera servi &agrave; partir du cache tant qu'il ne sera pas arriv&eacute; &agrave;
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor expiration.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si par exemple, votre configuration autorise l'acc&egrave;s &agrave; une ressource
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor en fonction de l'adresse IP, vous devez vous assurer que ce contenu n'est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pas mis en cache. Ceci est possible en utilisant la directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheDisable</directive>, ou le module
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_expires</module>. Livr&eacute; &agrave; lui-m&ecirc;me,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_cache</module> - pratiquement comme un mandataire inverse -
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor mettrait en cache le contenu lors de son service, et le servirait ensuite
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor &agrave; tout client, vers n'importe quelle adresse IP.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Piratages locaux</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Etant donn&eacute; que les requ&ecirc;tes des utilisateurs finaux peuvent &ecirc;tre
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor servies depuis le cache, ce dernier est une cible potentielle pour ceux
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor qui veulent d&eacute;figurer un contenu ou interf&eacute;rer avec lui. Il est important
a9db829bebc5339233a3242f6742816425751d15lgentis de garder &agrave; l'esprit que l'utilisateur sous lequel tourne
a9db829bebc5339233a3242f6742816425751d15lgentis httpd doit
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor toujours avoir l'acc&egrave;s en &eacute;criture dans le cache. Ceci est en contraste
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor total avec la recommandation usuelle d'interdire &agrave; l'utilisateur sous
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor lequel tourne Apache
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor l'acc&egrave;s en &eacute;criture &agrave; tout contenu.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si l'utilisateur sous lequel tourne Apache est compromis,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor par exemple &agrave; cause d'une
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor faille de s&eacute;curit&eacute; dans un processus CGI, il est possible que le cache
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fasse l'objet d'une attaque. Il est relativement ais&eacute; d'ins&eacute;rer ou de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor modifier une entit&eacute; dans le cache en utilisant le module
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <module>mod_cache_disk</module>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Cela repr&eacute;sente un risque relativement &eacute;l&eacute;v&eacute; par rapport aux autres
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor types d'attaques qu'il est possible de mener sous l'utilisateur apache.
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin Si vous utilisez <module>mod_cache_disk</module>, vous devez garder ceci
a9db829bebc5339233a3242f6742816425751d15lgentis &agrave; l'esprit : effectuez toujours les mises &agrave; jour de
a9db829bebc5339233a3242f6742816425751d15lgentis httpdquand des
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor correctifs de s&eacute;curit&eacute; sont annonc&eacute;s et ex&eacute;cutez les processus CGI sous
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor un utilisateur autre qu'apache en utilisant
84de86c73bd1ea1143faa04bcf4893e5885a7b60lgentis <a href="suexec.html">suEXEC</a> dans la mesure du possible.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Empoisonnement du cache (Cache Poisoning)</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
a9db829bebc5339233a3242f6742816425751d15lgentis <p>Si vous utilisez httpd comme serveur mandataire avec mise en cache,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor vous vous exposez aussi &agrave; un &eacute;ventuel "Empoisonnement du
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor cache" (Cache poisoning). L'empoisonnement du cache est un terme g&eacute;n&eacute;ral
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pour d&eacute;signer les attaques au cours desquelles l'attaquant fait en sorte
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor que le serveur mandataire renvoie &agrave; un contenu incorrect (et souvent
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ind&eacute;sirable) suite &agrave; en provenance du serveur d'arri&egrave;re-plan.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Par exemple, si les serveur DNS qu'utilise votre syst&egrave;me o&ugrave; tourne
a9db829bebc5339233a3242f6742816425751d15lgentis httpd sont vuln&eacute;rables &agrave; l'empoisonnement du cache des DNS, un attaquant
a9db829bebc5339233a3242f6742816425751d15lgentis pourra contr&ocirc;ler vers o&ugrave; httpd se connecte lorsqu'il demande un contenu
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor depuis le serveur d'origine.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Un autre exemple est constitu&eacute; par les attaques ainsi nomm&eacute;es
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor "Dissimulation de requ&ecirc;tes HTTP" (HTTP request-smuggling).</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Ce document n'est pas le bon endroit pour une discussion approfondie
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor &agrave; propos de la Dissimulation de requ&ecirc;tes HTTP (utilisez plut&ocirc;t votre
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor moteur de recherche favori); il est cependant important de savoir qu'il
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor est possible d'&eacute;laborer une s&eacute;rie de requ&ecirc;tes, et d'exploiter une
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor vuln&eacute;rabilit&eacute; d'un serveur web d'origine de telle fa&ccedil;on que l'attaquant
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor puisse contr&ocirc;ler enti&egrave;rement le contenu renvoy&eacute; par le mandataire.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section id="filehandle">
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Mise en cache de la gestion de fichier</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <related>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <modulelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_file_cache</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </modulelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directivelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_file_cache">CacheFile</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </directivelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </related>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Le fait d'ouvrir un fichier peut en lui-m&ecirc;me introduire un d&eacute;lai,
a9db829bebc5339233a3242f6742816425751d15lgentis en particulier dans les syst&egrave;mes de fichiers r&eacute;partis
a9db829bebc5339233a3242f6742816425751d15lgentis sur le r&eacute;seau. httpd
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor peut s'affranchir de ce d&eacute;lai en maintenant
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor un cache des descripteurs de fichiers
a9db829bebc5339233a3242f6742816425751d15lgentis ouverts pour ce qui concerne les fichiers souvent
a9db829bebc5339233a3242f6742816425751d15lgentis acc&eacute;d&eacute;s. httpd propose
fe78e9e02260dce00a6670d11efd8df56d535980lgentis actuellement une impl&eacute;mentation de mise en cache de la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor gestion de fichier.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Directive CacheFile</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
a9db829bebc5339233a3242f6742816425751d15lgentis <p>La forme la plus &eacute;l&eacute;mentaire de mise en cache que
a9db829bebc5339233a3242f6742816425751d15lgentis propose httpd est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fournie par le module <module>mod_file_cache</module>.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Plut&ocirc;t que de mettre en cache le contenu des fichiers, ce cache maintient
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor une table des descripteurs de fichiers ouverts. Les fichiers &agrave; mettre en
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor cache de cette mani&egrave;re sont sp&eacute;cifi&eacute;s dans le fichier de configuration
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor en utilisant la directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_file_cache">CacheFile</directive>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>La directive
a9db829bebc5339233a3242f6742816425751d15lgentis <directive module="mod_file_cache">CacheFile</directive> demande
a9db829bebc5339233a3242f6742816425751d15lgentis &agrave; httpd
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d'ouvrir le fichier lors de son d&eacute;marrage et de r&eacute;utiliser le descripteur
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor de fichier &eacute;labor&eacute; &agrave; cette occasion pour tous les
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor acc&egrave;s ult&eacute;rieurs &agrave; ce fichier.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <pre>CacheFile /usr/local/apache2/htdocs/index.html</pre>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Si vous avez l'intention de mettre en cache un grand nombre de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fichiers de cette mani&egrave;re, vous devez vous assurer que le nombre maximum
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor de fichiers ouverts par votre syst&egrave;me d'exploitation est correctement
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d&eacute;fini.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Bien que l'utilisation de la directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_file_cache">CacheFile</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor n'entra&icirc;ne pas la mise en cache du contenu du fichier, cela ne signifie
a9db829bebc5339233a3242f6742816425751d15lgentis pas qu'en cas de modification du fichier pendant
a9db829bebc5339233a3242f6742816425751d15lgentis l'ex&eacute;cution de httpd,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ces changements seront pris en compte. Le fichier sera toujours servi
a9db829bebc5339233a3242f6742816425751d15lgentis dans l'&eacute;tat o&ugrave; il &eacute;tait quand httpd a d&eacute;marr&eacute;.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
a9db829bebc5339233a3242f6742816425751d15lgentis <p>Si le fichier est supprim&eacute; pendant l'ex&eacute;cution de
a9db829bebc5339233a3242f6742816425751d15lgentis httpd, ce dernier
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor continuera &agrave; maintenir un descripteur de fichier ouvert et &agrave; servir le
a9db829bebc5339233a3242f6742816425751d15lgentis fichier dans l'&eacute;tat o&ugrave; il &eacute;tait quand httpd a d&eacute;marr&eacute;. Cela signifie
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor aussi habituellement que malgr&eacute; le fait que le fichier ait &eacute;t&eacute; supprim&eacute;,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor et ne soit
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor plus accessible par le syst&egrave;me de fichiers, l'espace lib&eacute;r&eacute; ne sera
a9db829bebc5339233a3242f6742816425751d15lgentis restitu&eacute; qu'&agrave; l'arr&ecirc;t de httpd quand le
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor descripteur de fichier sera ferm&eacute;.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
fe78e9e02260dce00a6670d11efd8df56d535980lgentis
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section id="inmemory">
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Mise en cache en m&eacute;moire</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <related>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <modulelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <module>mod_file_cache</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </modulelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directivelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheEnable</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheDisable</directive>
a1066e2786436743f6791963fb266282c25e1e99lgentis <directive module="mod_file_cache">MMapFile</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </directivelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </related>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Servir un contenu directement depuis la m&eacute;moire syst&egrave;me est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor universellement reconnu comme la m&eacute;thode la plus rapide. Lire des fichiers
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor depuis un contr&ocirc;leur de disque ou pire, depuis un r&eacute;seau distant est plus
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor lent de plusieurs ordres de grandeur. Les contr&ocirc;leurs de disque r&eacute;alisent
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor en g&eacute;n&eacute;ral des op&eacute;rations m&eacute;caniques, et l'acc&egrave;s au r&eacute;seau est limit&eacute; par la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor bande passante dont vous disposez. Par contre, les temps d'acc&egrave;s &agrave; la
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor m&eacute;moire sont de l'ordre de la nano-seconde.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Cependant la m&eacute;moire syst&egrave;me n'est pas bon march&eacute;; &agrave; capacit&eacute; &eacute;gale,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor c'est de loin le type de stockage le plus co&ucirc;teux et il est important de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor s'assurer qu'elle est utilis&eacute;e efficacement. Le fait de mettre en cache
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor des fichiers en m&eacute;moire diminue d'autant la quantit&eacute; de m&eacute;moire syst&egrave;me
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor disponible. Comme nous le verrons plus loin, ce n'est pas un probl&egrave;me en
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor soi dans le cas de la mise en cache par l'interm&eacute;diaire du syst&egrave;me
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d'exploitation, mais si l'on utilise la mise en cache en m&eacute;moire propre &agrave;
a9db829bebc5339233a3242f6742816425751d15lgentis httpd, il faut prendre garde &agrave; ne pas allouer trop de m&eacute;moire au cache.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Sinon le syst&egrave;me sera contraint d'utiliser le swap, ce qui d&eacute;gradera
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor sensiblement les performances.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Mise en cache par l'interm&eacute;diaire du syst&egrave;me d'exploitation</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Dans la plupart des syst&egrave;mes d'exploitation modernes, c'est le noyau
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor qui g&egrave;re directement la mise en cache en m&eacute;moire des donn&eacute;es relatives
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor aux fichiers. C'est une fonctionnalit&eacute; puissante, et les syst&egrave;mes
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d'exploitation s'en acquittent fort bien pour la plus grande partie.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Consid&eacute;rons par exemple, dans le cas de Linux, la diff&eacute;rence entre le
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor temps n&eacute;cessaire &agrave; la premi&egrave;re lecture d'un fichier et le temps
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor n&eacute;cessaire &agrave; sa deuxi&egrave;me lecture;</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <example><pre>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorcolm@coroebus:~$ time cat testfile &gt; /dev/null
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorreal 0m0.065s
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzoruser 0m0.000s
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorsys 0m0.001s
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorcolm@coroebus:~$ time cat testfile &gt; /dev/null
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorreal 0m0.003s
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzoruser 0m0.003s
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorsys 0m0.000s</pre>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>M&ecirc;me pour ce petit fichier, il y a une grande diff&eacute;rence entre les
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor temps n&eacute;cessaires pour lire le fichier. Ceci est du au fait que le
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor noyau a mis en cache le contenu du fichier en m&eacute;moire.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Du fait de toujours pouvoir disposer de m&eacute;moire syst&egrave;me, vous pouvez
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor &ecirc;tre assur&eacute; qu'il y aura de plus en plus de contenus de fichiers stock&eacute;s
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor dans ce cache. Ceci peut s'av&eacute;rer une m&eacute;thode de mise en cache en m&eacute;moire
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor tr&egrave;s efficace, et ne n&eacute;cessite aucune configuration suppl&eacute;mentaire
a9db829bebc5339233a3242f6742816425751d15lgentis de httpd.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>De plus, comme le syst&egrave;me d'exploitation sait si des fichiers
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ont &eacute;t&eacute;
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor supprim&eacute;s ou modifi&eacute;s, il peut effacer automatiquement des contenus de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fichiers du cache lorsque cela s'av&egrave;re n&eacute;cessaire. Ceci constitue un gros
a9db829bebc5339233a3242f6742816425751d15lgentis avantage par rapport &agrave; la mise en cache en m&eacute;moire
a9db829bebc5339233a3242f6742816425751d15lgentis de httpd qui n'a
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor aucune possibilit&eacute; de savoir si un fichier a &eacute;t&eacute; modifi&eacute;.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>En d&eacute;pit des performances et des avantages de la mise en cache
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor automatique par le syst&egrave;me d'exploitation, la mise en cache en m&eacute;moire
a9db829bebc5339233a3242f6742816425751d15lgentis peut &ecirc;tre effectu&eacute;e plus efficacement par httpd dans certaines
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor circonstances.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
a1066e2786436743f6791963fb266282c25e1e99lgentis <title>Mise en cache &agrave; l'aide de la directive MMapFile</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
a1066e2786436743f6791963fb266282c25e1e99lgentis <p>La directive <directive module="mod_file_cache">MMapFile</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fournie par le module <module>mod_file_cache</module> vous permet de
a9db829bebc5339233a3242f6742816425751d15lgentis demander &agrave; httpd de charger un contenu de fichier statique en m&eacute;moire
a9db829bebc5339233a3242f6742816425751d15lgentis lors de son d&eacute;marrage (&agrave; l'aide de l'appel
a9db829bebc5339233a3242f6742816425751d15lgentis syst&egrave;me mmap). httpd
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor utilisera le contenu charg&eacute; en m&eacute;moire pour satisfaire ult&eacute;rieurement
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor toutes les demandes d'acc&egrave;s &agrave; ce fichier.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <example>
a1066e2786436743f6791963fb266282c25e1e99lgentis <pre>MMapFile /usr/local/apache2/htdocs/index.html</pre>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Comme dans le cas de la directive
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_file_cache">CacheFile</directive>, toute
a9db829bebc5339233a3242f6742816425751d15lgentis modification du fichier ne sera plus prise en compte par httpd une fois
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ce dernier d&eacute;marr&eacute;.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p> La directive
a1066e2786436743f6791963fb266282c25e1e99lgentis <directive module="mod_file_cache">MMapFile</directive> ne gardant
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pas la trace de la quantit&eacute; de m&eacute;moire qu'elle alloue, vous devez prendre
a9db829bebc5339233a3242f6742816425751d15lgentis garde de ne pas en abuser. Chaque processus enfant de httpd utilisant
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor sa propre r&eacute;plique de la m&eacute;moire allou&eacute;e, il est donc d'une importance
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor critique de s'assurer que les fichiers charg&eacute;s ne sont pas d'une taille
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor trop importante afin d'&eacute;pargner au syst&egrave;me l'utilisation du swap.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
fe78e9e02260dce00a6670d11efd8df56d535980lgentis
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section id="disk">
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Mise en cache sur disque</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <related>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <modulelist>
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <module>mod_cache_disk</module>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </modulelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directivelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheEnable</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <directive module="mod_cache">CacheDisable</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </directivelist>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </related>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <p>Le module <module>mod_cache_disk</module> fournit un m&eacute;canisme de mise
fe78e9e02260dce00a6670d11efd8df56d535980lgentis en cache sur disque au module <module>mod_cache</module>. Cette mise en cache est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor intelligente et le contenu ne sera servi qu'&agrave; partir du cache tant qu'il
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor sera consid&eacute;r&eacute; comme valide.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Typiquement, le module sera configur&eacute; comme suit :</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <pre>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorCacheRoot /var/cache/apache/
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorCacheEnable disk /
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorCacheDirLevels 2
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzorCacheDirLength 1</pre>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </example>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Il est important de savoir que, les fichiers mis en cache &eacute;tant stock&eacute;s
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor localement, la mise en cache par l'interm&eacute;diaire du syst&egrave;me d'exploitation
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor sera en g&eacute;n&eacute;ral aussi appliqu&eacute;e &agrave; leurs acc&egrave;s. Si bien que m&ecirc;me si les
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fichiers sont stock&eacute;s sur disque, s'il font l'objet d'acc&egrave;s fr&eacute;quents,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor il est probable que le syst&egrave;me d'exploitation s'appliquera &agrave; ce qu'ils
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor soient servis &agrave; partir de la m&eacute;moire.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Comprendre le stockage dans le cache</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Pour stocker des entit&eacute;s dans le cache,
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin le module <module>mod_cache_disk</module> cr&eacute;e une empreinte (hash) de 22
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor caract&egrave;res de l'URL qui a fait l'objet d'une requ&ecirc;te. Cette empreinte
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor comprend le nom d'h&ocirc;te, le protocole, le port, le chemin et tout argument
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor de type CGI associ&eacute; &agrave; l'URL, afin d'&ecirc;tre sur que plusieurs URLs
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor n'interf&egrave;rent pas entre elles.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Chaque position de l'empreinte peut contenir un caract&egrave;re
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor choisi parmi 64 caract&egrave;res diff&eacute;rents, il y a donc
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor 64^22 possibilit&eacute;s pour une empreinte. Par exemple, une URL peut poss&eacute;der
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor l'empreinte <code>xyTGxSMO2b68mBCykqkp1w</code>. Cette empreinte est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor utilis&eacute;e pour pr&eacute;fixer les noms de fichiers sp&eacute;cifiques &agrave; cette URL &agrave;
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor l'int&eacute;rieur du cache; cependant, elle est tout d'abord plac&eacute;e dans les
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor r&eacute;pertoires du cache selon les directives
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <directive module="mod_cache_disk">CacheDirLevels</directive> et
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <directive module="mod_cache_disk">CacheDirLength</directive>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>La directive
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <directive module="mod_cache_disk">CacheDirLevels</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d&eacute;finit le nombre de niveaux de sous-r&eacute;pertoires, et
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <directive module="mod_cache_disk">CacheDirLength</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor le nombre de caract&egrave;res composant le nom des sous-r&eacute;pertoires. Dans
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor l'exemple donn&eacute; plus haut, l'empreinte se trouvera &agrave; :
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <code>/var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w</code>.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Cette technique a pour but principal de r&eacute;duire le nombre de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor sous-r&eacute;pertoires ou de fichiers contenus dans un r&eacute;pertoire particulier,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor car le fonctionnement de la plupart des syst&egrave;mes de fichiers est ralenti
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor quand ce nombre augmente. Avec la valeur "1" pour la directive
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <directive module="mod_cache_disk">CacheDirLength</directive>,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor il peut y avoir au plus 64 sous-r&eacute;pertoires &agrave; un niveau quelconque.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Avec la valeur "2", il peut y en avoir 64 * 64, etc...
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor A moins d'avoir une bonne raison pour ne pas le faire, l'utilisation de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor la valeur "1" pour la directive
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <directive module="mod_cache_disk">CacheDirLength</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor est recommand&eacute;e.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Le param&eacute;trage de la directive
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <directive module="mod_cache_disk">CacheDirLevels</directive>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d&eacute;pend du nombre de fichiers que vous pensez stocker dans le cache.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Avec une valeur de "2" comme dans l'exemple donn&eacute; plus haut,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor 4096 sous-r&eacute;pertoires peuvent &ecirc;tre cr&eacute;&eacute;s au total. Avec 1 million de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fichiers dans le cache, cela &eacute;quivaut &agrave; environ 245 URLs mises en cache
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor dans chaque r&eacute;pertoire.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Chaque URL n&eacute;cessite au moins deux fichiers dans le cache. Ce sont en
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor g&eacute;n&eacute;ral un fichier ".header", qui contient des meta-informations &agrave; propos
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor de l'URL, comme la date de son arriv&eacute;e &agrave; expiration,
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor et un fichier ".data" qui est la copie exacte du contenu &agrave; servir.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Dans le cas d'un contenu n&eacute;goci&eacute; via l'en-t&ecirc;te "Vary", un r&eacute;pertoire
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ".vary" sera cr&eacute;&eacute; pour l'URL en question. Ce r&eacute;pertoire contiendra de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor multiples fichiers ".data" correspondant aux diff&eacute;rents contenus
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor n&eacute;goci&eacute;s.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <title>Maintenance du cache sur disque</title>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <p>Bien que le module <module>mod_cache_disk</module> supprime un contenu
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor du cache lorsqu'il est arriv&eacute; &agrave; expiration, il ne maintient aucune
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor information &agrave; propos de la taille totale du cache ou de l'espace restant
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor disponible.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p>Par contre l'utilitaire
a9db829bebc5339233a3242f6742816425751d15lgentis <a href="programs/htcacheclean.html">htcacheclean</a> fourni avec
a9db829bebc5339233a3242f6742816425751d15lgentis httpd
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor vous permet, comme son nom l'indique, de nettoyer le cache p&eacute;riodiquement.
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor D&eacute;terminer la fr&eacute;quence &agrave; laquelle lancer <a
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor href="programs/htcacheclean.html">htcacheclean</a> et la taille souhait&eacute;e
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor pour le cache est une t&acirc;che relativement complexe et il vous faudra de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor nombreux essais et erreurs pour arriver &agrave; s&eacute;lectionner des valeurs
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor optimales.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p><a href="programs/htcacheclean.html">htcacheclean</a> op&egrave;re selon deux
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor modes. Il peut s'ex&eacute;cuter comme d&eacute;mon r&eacute;sident, ou &ecirc;tre lanc&eacute;
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor p&eacute;riodiquement par cron. <a
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor href="programs/htcacheclean.html">htcacheclean</a> peut mettre une heure
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor ou plus pour traiter de tr&egrave;s grands caches (plusieurs dizaines de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor Gigaoctets) et si vous l'ex&eacute;cutez &agrave; partir de cron, il vous est
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor conseill&eacute; de d&eacute;terminer la dur&eacute;e typique d'un traitement, afin d'&eacute;viter
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor d'ex&eacute;cuter plusieurs instances &agrave; la fois.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <p class="figure">
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <img src="images/caching_fig1.gif" alt="" width="600"
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor height="406" /><br />
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <a id="figure1" name="figure1"><dfn>Figure 1</dfn></a>: Croissance
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor typique du cache / s&eacute;quence de nettoyage.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
78f97ce162b66a0dbfd7af4dcd9984f162569b04minfrin <p>Comme <module>mod_cache_disk</module> ne tient pas compte de l'espace
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor utilis&eacute; dans le cache, vous devez vous assurer que
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor <a href="programs/htcacheclean.html">htcacheclean</a> est configur&eacute; de
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor fa&ccedil;on &agrave; laisser suffisamment d'"espace de croissance"
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor &agrave; la suite d'un nettoyage.</p>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor </section>
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor
ed56b00fec68f682f4acf26536dbe0b2f26f7449gryzor</manualpage>