| <?xml version="1.0"?> |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?> |
| <!-- English Revision : 1334016 --> |
| <!-- French translation : Lucien GENTIS --> |
| <!-- Reviewed by : Vincent Deffontaines --> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <modulesynopsis metafile="mod_file_cache.xml.meta"> |
| |
| <name>mod_file_cache</name> |
| <description>Mise en cache mémoire d'une liste statique de |
| fichiers</description> |
| <status>Experimental</status> |
| <sourcefile>mod_file_cache.c</sourcefile> |
| <identifier>file_cache_module</identifier> |
| |
| <summary> |
| |
| <note type="warning"> |
| Ce module doit être utilisé avec précautions. Il est recommandé de |
| lire attentivement ce document, car l'utilisation de |
| <module>mod_file_cache</module> peut facilement conduire à la |
| création d'un site inopérant. |
| </note> |
| |
| <p>La mise en cache de fichiers souvent demandés mais rarement |
| modifiés est une technique permettant de réduire la charge du |
| serveur. <module>mod_file_cache</module> met en oeuvre deux |
| techniques de mise en cache de fichiers <em>statiques</em> |
| fréquemment demandés. Des directives de configuration vous |
| permettent d'indiquer à <module>mod_file_cache</module> soit |
| d'ouvrir et de charger une image en mémoire d'un fichier avec |
| <code>mmap()</code>, soit de préouvrir un fichier et de maintenir en |
| service le <em>gestionnaire</em> du fichier. Les deux techniques |
| permettent de réduire la charge du serveur lors du traitement des |
| requêtes concernant ces fichiers, en accomplissant une partie du |
| travail nécessaire à la mise à disposition de ces fichiers (en |
| particulier les opérations d'entrées/sorties sur les fichiers) au |
| démarrage du serveur, plutôt qu'au cours de chaque requête.</p> |
| |
| <p>Note : ces techniques sont inutilisables pour accélérer des |
| programmes CGI ou d'autres fichiers servis par des gestionnaires de |
| contenu spéciaux. Elles ne peuvent être utilisées que pour des |
| fichiers standards, normalement servis par le gestionnaire de contenu |
| de base d'Apache.</p> |
| |
| <p>Ce module est une extension du module |
| d'Apache 1.3 <code>mod_mmap_static</code>et s'en inspire |
| fortement .</p> |
| </summary> |
| |
| <section id="using"><title>Utilisation de mod_file_cache</title> |
| |
| <p><module>mod_file_cache</module> gère la mise en cache d'une liste |
| de fichiers définie de manière statique via une des directives |
| <directive module="mod_file_cache">MMapFile</directive> ou |
| <directive module="mod_file_cache">CacheFile</directive> au niveau |
| de la configuration du serveur principal.</p> |
| |
| <p>Les deux directives ne sont pas supportées par toutes les |
| plates-formes. Par exemple, Apache pour Windows ne supporte pas |
| actuellement la directive <directive |
| module="mod_file_cache">MMapFile</directive>, alors que d'autres |
| plates-formes, comme AIX, supportent les deux. Vous recevrez un |
| message d'erreur dans le journal des erreurs du serveur si vous |
| essayez d'utiliser une directive non supportée. Si vous utilisez une |
| directive non supportée, le serveur démarrera, mais les fichiers ne |
| seront pas mis en cache. Sur les plates-formes qui supportent les |
| deux directives, vous devez faire des essais afin de déterminer |
| quelle directive vous convient le mieux.</p> |
| |
| <section><title>Directive MMapFile</title> |
| |
| <p>La directive <directive |
| module="mod_file_cache">MMapFile</directive> du module |
| <module>mod_file_cache</module> permet de transférer en mémoire |
| une liste statique de fichiers à l'aide de l'appel système |
| <code>mmap()</code>. Cet appel système est disponible sur la |
| plupart des plates-formes de style Unix, mais pas sur toutes. Il |
| existe parfois des limites spécifiques au système quant à la |
| taille et au nombre de fichiers qui peuvent être |
| <code>mmap()</code>és, et l'expérimentation est probablement la |
| méthode la plus simple pour déterminer ces limites.</p> |
| |
| <p>Ce <code>mmap()</code>age n'est effectué qu'une seul fois au |
| démarrage ou redémarrage du serveur. Ainsi, chaque fois qu'un des |
| fichiers chargés en mémoire est modifié au niveau du système de |
| fichiers, vous <em>devez</em> redémarrer le serveur (voir la |
| documentation sur l'<a |
| href="../stopping.html">Arrêt et redémarrage</a>). Pour bien |
| insister sur ce point, si des fichiers sont modifiés <em>sur |
| disque</em>, et si vous ne redémarrez pas le serveur, vous allez |
| finir par servir des contenus complètement obsolètes. Vous devez |
| mettre à jour les fichiers en renommant l'ancienne version et en |
| enregistrant la nouvelle sur disque. Pour y parvenir, on peut |
| utiliser des outils comme <code>rdist</code> et <code>mv</code>. |
| La raison pour laquelle ce module ne prend pas en compte les |
| modifications de fichiers réside dans le fait que cette |
| vérification nécessiterait un appel à <code>stat()</code> à chaque |
| accès, et en fin de compte, l'augmentation de la consommation de |
| ressources finirait par aller contre le but initial de |
| réduire les entrées/sorties.</p> |
| </section> |
| |
| <section><title>Directive CacheFile</title> |
| |
| <p>La directive <directive |
| module="mod_file_cache">CacheFile</directive> du module |
| <module>mod_file_cache</module> permet d'associer un |
| <em>gestionnaire</em> ou <em>descripteur de fichier</em> à chaque |
| fichier énuméré dans la directive de configuration et place ces |
| gestionnaires de fichiers ouverts dans le cache. Lorsqu'un des |
| fichier est demandé, le serveur sélectionne son gestionnaire dans |
| le cache et le transmet à l'API <code>sendfile()</code> (ou |
| <code>TransmitFile()</code> sous Windows).</p> |
| |
| <!-- XXX |
| <p>Insert more details about sendfile API...</p> |
| --> |
| |
| <p>Cette mise en cache des gestionnaire n'est effectuée qu'une |
| seule fois au démarrage ou redémarrage du système. Ainsi, chaque |
| fois qu'un des fichiers chargés en mémoire est modifié au niveau |
| du système de fichiers, vous <em>devez</em> redémarrer le serveur |
| (voir la documentation sur l'<a |
| href="../stopping.html">Arrêt et redémarrage</a>). |
| Pour bien |
| insister sur ce point, si des fichiers sont modifiés <em>sur |
| disque</em>, et si vous ne redémarrez pas le serveur, vous allez |
| finir par servir des contenus complètement obsolètes. Vous devez |
| mettre à jour les fichiers en renommant l'ancienne version et en |
| enregistrant la nouvelle sur disque. Pour y parvenir, on peut |
| utiliser des outils comme <code>rdist</code> et |
| <code>mv</code>.</p> |
| </section> |
| |
| <note><title>Note</title> |
| <p>Ne cherchez pas à trouver de directive qui met tous les |
| fichiers d'un répertoire en cache, de manière récursive. Pour y |
| parvenir, vous pouvez vous reporter à la directive <directive |
| module="core">Include</directive> directive, et considérer cette |
| commande :</p> |
| |
| <example> |
| find /www/htdocs -type f -print \<br /> |
| | sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf |
| </example> |
| </note> |
| </section> |
| |
| <directivesynopsis> |
| <name>MMapFile</name> |
| <description>Charge au démarrage une liste de fichiers en mémoire</description> |
| <syntax>MMapFile <var>chemin fichier</var> [<var>chemin fichier</var>] ...</syntax> |
| <contextlist><context>server config</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>MMapFile</directive> permet de charger un |
| ou plusieurs fichiers (séparés par des espaces) en mémoire au |
| démarrage du serveur. Ceux-ci sont automatiquement déchargés de la |
| mémoire à l'arrêt du serveur. Lorsqu'un ou plusieurs fichiers ont |
| été modifiés sur disque, on doit au minimum envoyer un signal |
| <code>HUP</code> ou <code>USR1</code> au serveur afin de les |
| re<code>mmap()</code>er.</p> |
| |
| <p>Soyez prudent avec les arguments <var>chemin fichier</var> : ils |
| doivent correspondre exactement au chemin du système de fichier que |
| créent les gestionnaires de traduction URL-vers-nom-fichier |
| d'Apache. On ne peut pas comparer des inodes ou autres identifiants |
| pour mettre en correspondance des chemins à l'aide de liens |
| symboliques <em>(etc...)</em>, car là encore, ceci nécessiterait un |
| appel à <code>stat()</code> supplémentaire, ce qui n'est pas |
| acceptable. |
| Il n'est pas garanti que ce module fonctionne avec des noms de |
| fichiers réécrits par <module>mod_alias</module> ou |
| <module>mod_rewrite</module>.</p> |
| |
| <example><title>Exemple</title> |
| <highlight language="config"> |
| MMapFile /usr/local/apache/htdocs/index.html |
| </highlight> |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>CacheFile</name> |
| <description>Met en cache une liste de gestionnaires de fichiers au |
| démarrage</description> |
| <syntax>CacheFile <var>chemin fichier</var> [<var>chemin fichier</var>] ...</syntax> |
| <contextlist><context>server config</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>CacheFile</directive> permet d'associer |
| des gestionnaires à un ou plusieurs fichiers (séparés par des |
| espaces), et de placer ceux-ci dans le cache au démarrage du |
| serveur. Les gestionnaires des fichiers mis en cache sont |
| automatiquement fermés à l'arrêt du serveur. Lorsqu'un ou plusieurs |
| fichiers ont été modifiés sur disque, le serveur doit être redémarré |
| afin que les modifications soient prises en compte par le cache.</p> |
| |
| <p>Soyez prudent avec les arguments <var>chemin fichier</var> : ils |
| doivent correspondre exactement au chemin du système de fichier que |
| créent les gestionnaires de traduction URL-vers-nom-fichier |
| d'Apache. On ne peut pas comparer des inodes ou autres identifiants |
| pour mettre en correspondance des chemins à l'aide de liens |
| symboliques <em>(etc...)</em>, car là encore, ceci nécessiterait un |
| appel à <code>stat()</code> supplémentaire, ce qui n'est pas acceptable. |
| Il n'est pas garanti que ce module fonctionne avec des noms de |
| fichiers réécrits par <module>mod_alias</module> ou |
| <module>mod_rewrite</module>.</p> |
| |
| <example><title>Exemple</title> |
| <highlight language="config"> |
| CacheFile /usr/local/apache/htdocs/index.html |
| </highlight> |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| </modulesynopsis> |