Кеш інтервікі
MediaWiki має таблицю бази даних (таблиця interwiki ) для інтервікі-префіксів. За замовчуванням це використовується безпосередньо, але для кращої продуктивності можна використовувати два типи кешування.
База даних і memcached
When memcached is enabled, the interwiki prefixes of the database table will be cached too.
This can be controlled using the $wgInterwikiExpiry
setting.
This cache can be cleared using the clearInterwikiCache.php script. It removes the caching based on the prefixes found in the database table.
Кеш інтервікі
The $wgInterwikiCache variable can be set to a static array that will be used instead of the database table, thus achieving even better performance by removing latencies to memcached and avoiding the database queries to populate a cache.
The array is typically stored in a PHP file containing <?php return array( .. );
and loaded by assigning it to $wgInterwikiCache
with require
.
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.
Налаштування цього на власній вікі
- 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.