Manual:インターウィキのキャッシュ
MediaWiki には、インターウィキ接頭辞のためのデータベース テーブル (interwiki テーブル) があります。 これは既定で直接使用されますが、パフォーマンスを向上させるために 2 種類のキャッシュを使用できます。
データベースと memcached
memcached が有効になっている場合、データベース テーブルのインターウィキ接頭辞もキャッシュされます。
これは、$wgInterwikiExpiry
設定を使用して制御できます。
このキャッシュは、clearInterwikiCache.php スクリプトを使用してクリアできます。 データベース テーブル内の接頭辞に基づいたキャッシュを除去します。
インターウィキのキャッシュ
$wgInterwikiCache 変数は、データベース テーブルの代わりに使用される静的な配列に設定でき、これにより memcached のレイテンシーを除去し、キャッシュを生成するためのデータベース クエリを回避することで、さらに高いパフォーマンスを実現します。
配列は通常、<?php return array( .. );
を含む PHP ファイルに格納され、require
を使用してそれを $wgInterwikiCache
に割り当てることで読み込まれます。
MediaWiki does not currently provide a built-in script to build such a cache file (T35395), however the extension Extension:WikimediaMaintenance contains dumpInterwiki.php which is a WMF-specific script.
The $wgInterwikiScopes and $wgInterwikiFallbackSite settings are used when reading this cache.
Setting this up on your own wiki
- You will need a copy of extension/WikimediaMaintenance; place this in the extensions directory in the root of your MediaWiki installation.
- Retrieve the files all.dblist, special.dblist, and langlist and put them someplace (e.g. in a subdir in the base of your MediaWiki installation) for convenience.
- Edit extension/WikimediaMaintenance/dumpInterwikis.php and change the path
/srv/mediawiki
for those three files to the path to the directory where you just put them.
- From the base of your MediaWiki installation, do
echo 'print WikiMap::getCurrentWikiId();' | php maintenance/eval.php
- Add this value to all.dblist, assuming it's not already in there. If it does not start with a known language code (e.g. it is, say, 'wikitech-mw_' instead of something nice like 'frwiktionary'), add it also to special.dblist. You can check the language codes in the langlist file you copied over.
- From the base of your MediaWiki installation, do
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
- From the base of your MediaWiki installation, make a copy of any existing cache/interwiki.db file you may have and then do
cp cache/new-interwikis.php cache/interwiki.php
- Edit LocalSettings.php and add
$wgInterwikiCache = require "$IP/cache/interwiki.php";
Now shortcuts and all other iw links should work for your project. Note that if you added it to 'special.dblist', it will behave as though it is a 'wikipedia' with en as the default language.