Cache interwiki
MediaWiki possède une table de base de données (table interwiki ) pour les préfixes interwiki. Par défaut, elle est utilisée directement mais deux types de cache peuvent être utilisés pour améliorer les performances.
Base de données et memcached
Lorsque memcached est activé, les préfixes interwikis de la table de la base de données seront mis en cache également.
Ceci peut être contrôlé en utilisant le paramètre $wgInterwikiExpiry
.
Ce cache peut être effacé en utilisant le script clearInterwikiCache.php . Il supprime la mise en cache en fonction des préfixes trouvés dans la table de la base de données.
Cache interwiki
La variable $wgInterwikiCache peut être initialisée vers un tableau statique utilisé à la place de la table de la base de données, améliorant ainsi les performances en supprimant le délai apporté par memcached et en évitant les requêtes dans la base de données pour remplir le cache.
Le tableau est typiquement enregistré dans un fichier PHP contenant <?php return array( .. );
et chargé en l'assignant à $wgInterwikiCache
avec require
.
MediaWiki ne propose pas de script embarqué actuellement pour construire un tel fichier de cache (T35395), néanmoins l'extension Extension:WikimediaMaintenance contient dumpInterwiki.php qui est spécifique à la WMF.
Les paramètres $wgInterwikiScopes et $wgInterwikiFallbackSite sont utilisés pour la lecture dans le cache.
Configurer cela sur votre propre wiki
- Vous devrez disposer d'une copie de l'extension/WikimediaMaintenance; placez-la dans le répertoire des extensions de la racine de votre répertoire d'installation de MediaWiki.
- Récupérez les fichiers all.dblist, special.dblist, et langlist et placez-les dans un sous-répertoire de la racine (par exemple) de votre installation MediaWiki, à votre convenance.
- Modifiez extension/WikimediaMaintenance/dumpInterwikis.php en mettant à jour le chemin
/srv/mediawiki
de ces trois fichiers avec le répertoire choisi ci-avant.
- A partir de la racine de votre installation MediaWiki, faire :
echo 'print WikiMap::getCurrentWikiId();' | php maintenance/eval.php
- Ajouter cette valeur à all.dblist en supposant qu'elle n'y soit pas déjà. S'il ne démarre pas avec le code d'une langue connue (en donnant par exemple 'wikitech-mw_' au lieu de quelque chose de plus sympathique comme 'frwiktionary'), ajoutez-le également à special.dblist. Vous pouvez trouver les codes de langue dans le fichier langlist que vous avez copié.
- A partir de la racine de votre installation MediaWiki, faire :
php extensions/WikimediaMaintenance/dumpInterwiki.php > cache/new-interwikis.php
- or in versions since MediaWiki 1.40:
./maintenance/run extensions/WikimediaMaintenance/dumpInterwiki.php > cache/new-interwikis.php
- A partir de la racine de votre installation MediaWiki, faites une copie de tout fichier cache/interwiki.db que vous pourriez trouver, puis exécutez :
cp cache/new-interwikis.php cache/interwiki.php
- Modifiez LocalSettings.php pour ajouter
$wgInterwikiCache = require "$IP/cache/interwiki.php";
Maintenant les raccourcis et tous les autres liens interwikis doivent fonctionner dans votre projet. Notez que si l'ajout est fait dans 'special.dblist', le comportement sera celui de 'Wikipedia' avec l'anglais comme langue par défaut.