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