Serveur Apache HTTP Version 2.4
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 |
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_static
et s'en inspire
fortement .
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.
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.
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
.
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
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
.
CacheFile /usr/local/apache/htdocs/index.html
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
.
MMapFile /usr/local/apache/htdocs/index.html