Manual:$wgFileCacheDepth/fr

From MediaWiki.org
Jump to: navigation, search
Cache de fichier: $wgFileCacheDepth
Profondeur de la hiérarchie de sous-répertoires sous $wgFileCacheDirectory.
Introduit dans la version: 1.17.0(r77843)
Retiré dans la version: toujours utilisé
Valeurs autorisées: 0–32
Valeur par défaut: 2

Autres paramètres: Alphabétique | Par Fonction


Détails [edit]

Cette variable contrôle la profondeur de la hiérarchie de sous-répertoires créée sous $wgFileCacheDirectory pour stocker les pages mises en cache quand $wgUseFileCache = true;.

Par défaut, deux niveaux de répertoires intermédiaires sont créés, correspondant au comportement de MediaWiki 1.16 et précédents. Les répertoires sont nommés en utilisant les préfixes du hachage hexadécimal MD5 du titre de la page. Par exemple, si le titre de la page était "Example" (qui a le hachage MD5 "0a52730597fb4ffa01fc117d9e71e3a9"), le fichier dans lequel la page mise en cache serait stocké s'appellerait

$wgFileCacheDirectory/0/0a/Example.html

Le but de la hiérarchie de sous-répertoires est de répartir les fichiers en cache régulièrement entre divers répertoires, réduisant ainsi le nombre de fichier dans chaque répertoire individuel. Sur certains systèmes de fichier, cela peut améliorer les performances si le nombre de pages en cache est grand. Cependant, si votre wiki est petit, ou si vous savez que le système de fichiers peut gérer efficacement de grands répertoires, vous pouvez vouloir mettre $wgFileCacheDepth = 0; pour vous débarrasser complètement des répertoires intermédiaires (inversement, si votre wiki est gros, vous pouvez essayer d'augmenter la valeur pour répartir les fichiers sur davantage de répertoires).

Servir directement les pages en cache [edit]

Mettre $wgFileCacheDepth = 0; facilite aussi grandement l'utilisation des combines de configuration de serveur web pour servir les fichiers en cache directement sans invoquer MediaWiki ou PHP du tout.

Par exemple, la règle mod_rewrite suivante s'est avérée fonctionner dans un fichier .htaccess sur un hôte web partagé faisant tourner Apache 2.2:

RewriteBase /
# Si une page en cache existe sous /w/html_cache, faire une redirection interne vers elle:
RewriteCond %{HTTP_COOKIE} !UserID=
RewriteCond %{QUERY_STRING} !.
RewriteCond %{DOCUMENT_ROOT}/w/html_cache/$1.html -s
RewriteRule ^wiki/(.+)$ /w/html_cache/$1.html [B,L,NS]

Cependant, cette règle de réécriture ne fonctionne pas bien pour les pages dont les titres contiennent des caractères de ponctuation ou non ASCII. Une solution ordonnée serait d'utiliser une RewriteMap, mais cela n'est pas supporté dans un contexte de .htaccess. À la place, la combine suivante peut être utilisée pour gérer les titres non ASCII en récupérant le titre échappé directement de l'URL de la ligne de requête brute:

RewriteBase /
# Si une page en cache existe sous /w/html_cache, faire une redirection interne vers elle:
RewriteCond %{HTTP_COOKIE} !UserID=
RewriteCond %{QUERY_STRING} !.
ReWriteCond %{THE_REQUEST} ^GET\x20/wiki/([^\x20/]+)\x20HTTP
RewriteCond %{DOCUMENT_ROOT}/w/html_cache/%1.html -s
RewriteRule ^wiki/(.+)$ /w/html_cache/%1.html [B,L,NS]

Cela ne correspondra toujours pas pour les titres contenant des virgules, des barres obliques ou d'autres signes de ponctuation que le cache de fichiers échappe, mais pas les navigateurs (ou inversement). On doit aussi s'assurer que l'entête Vary approprié a été envoyé:

Header append Vary Cookie

Remarquez aussi que comme cette redirection évite totalement MediaWiki, elle ne respecte pas $wgCacheEpoch. Vous pouvez avoir besoin de nettoyer ou reconstruire le cache manuellement au besoin, à la place.

(Si vous connaissez de meilleurs moyens pour y arriver, merci de les ajouter ici. Merci.)

Voir aussi [edit]

Langue : English  • français • 日本語