<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_file_cache

Langues Disponibles:  en  |  fr  |  ko 

Description:Mise en cache m�moire d'une liste statique de fichiers
Statut:Exp�rimental
Identificateur�de�Module:file_cache_module
Fichier�Source:mod_file_cache.c

Sommaire

Ce module doit �tre utilis� avec pr�cautions. Il est recommand� de lire attentivement ce document, car l'utilisation de mod_file_cache peut facilement conduire � la cr�ation d'un site inop�rant.

La mise en cache de fichiers souvent demand�s mais rarement modifi�s est une technique permettant de r�duire la charge du serveur. mod_file_cache met en oeuvre deux techniques de mise en cache de fichiers statiques fr�quemment demand�s. Des directives de configuration vous permettent d'indiquer � mod_file_cache soit d'ouvrir et de charger une image en m�moire d'un fichier avec mmap(), soit de pr�ouvrir un fichier et de maintenir en service le gestionnaire 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.

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.

Ce module est une extension du module d'Apache 1.3 mod_mmap_staticet s'en inspire fortement .

Directives

Sujets

top

Utilisation de mod_file_cache

mod_file_cache g�re la mise en cache d'une liste de fichiers d�finie de mani�re statique via une des directives MMapFile ou CacheFile au niveau de la configuration du serveur principal.

Les deux directives ne sont pas support�es par toutes les plates-formes. Par exemple, Apache pour Windows ne supporte pas actuellement la directive MMapFile, 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.

Directive MMapFile

La directive MMapFile du module mod_file_cache permet de transf�rer en m�moire une liste statique de fichiers � l'aide de l'appel syst�me mmap(). 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 mmap()�s, et l'exp�rimentation est probablement la m�thode la plus simple pour d�terminer ces limites.

Ce mmap()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 devez red�marrer le serveur (voir la documentation sur l'Arr�t et red�marrage). Pour bien insister sur ce point, si des fichiers sont modifi�s sur disque, 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 rdist et mv. 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 � stat() � 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.

Directive CacheFile

La directive CacheFile du module mod_file_cache permet d'associer un gestionnaire ou descripteur de fichier � 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 sendfile() (ou TransmitFile() sous Windows).

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 devez red�marrer le serveur (voir la documentation sur l'Arr�t et red�marrage). Pour bien insister sur ce point, si des fichiers sont modifi�s sur disque, 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 rdist et mv.

Note

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 Include directive, et consid�rer cette commande :

find /www/htdocs -type f -print \
| sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf

top

CacheFile Directive

Description:Met en cache une liste de gestionnaires de fichiers au d�marrage
Syntaxe:CacheFile chemin fichier [chemin fichier] ...
Contexte:configuration du serveur
Statut:Exp�rimental
Module:mod_file_cache

La directive CacheFile 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.

Soyez prudent avec les arguments chemin fichier : 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 (etc...), car l� encore, ceci n�cessiterait un appel � stat() 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 mod_alias ou mod_rewrite.

Exemple

      CacheFile /usr/local/apache/htdocs/index.html
      
top

MMapFile Directive

Description:Charge au d�marrage une liste de fichiers en m�moire
Syntaxe:MMapFile chemin fichier [chemin fichier] ...
Contexte:configuration du serveur
Statut:Exp�rimental
Module:mod_file_cache

La directive MMapFile 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 HUP ou USR1 au serveur afin de les remmap()er.

Soyez prudent avec les arguments chemin fichier : 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 (etc...), car l� encore, ceci n�cessiterait un appel � stat() 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 mod_alias ou mod_rewrite.

Exemple

      MMapFile /usr/local/apache/htdocs/index.html
      

Langues Disponibles:  en  |  fr  |  ko 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.