Manual:インターウィキのキャッシュ

This page is a translated version of the page Manual:Interwiki cache and the translation is 42% complete.

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.