Interwiki cache

MediaWiki has a database table (interwiki table) for interwiki prefixes. This is by default used directly, but two types of caching can be used for better performance.

"Interwiki cache" can thus refer to two types of caching, but in Wikimedia context it usually refers to CDB caching.

Database and 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 clear_interwiki_cache.php script. It removes the caching based on the prefixes found in the database table.

CDB interwiki cache
When $wgInterwikiCache is set to point to a CDB file, that file is then used as a replacement for the database.

MediaWiki does not contain a script to build or update such a CDB cache file (bug 33395), however WikimediaMaintenance contains dumpInterwiki.php and rebuildInterwiki.php which are custom Wikimedia-specific scripts used for the CDB cache of all Wikimedia wikis.

The $wgInterwikiScopes and $wgInterwikiFallbackSite settings are used for this caching.

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 somplace (e.g. in a subdir in the base of your MediaWiki installation) for convenience.
 * Edit extension/WikimediaMaintenance/dumpInterwikis.php and change the paths /home/wikipedia/common for those three files to the path to the directory where you just put them.
 * Since you most likely don't use our CommonSettings.php etc setup, edit extension/WikimediaMaintenance/WikimediaMaintenance.php and change the line
 * to
 * to


 * From the base of your MediaWiki installation, do
 * 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.
 * 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.
 * 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
 * From the base of your MediaWiki installation, make a copy of any existing cache/interwiki.db file you may have and then do
 * Edit LocalSettings.php and add
 * Edit LocalSettings.php and add
 * Edit LocalSettings.php and add

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.

Retrieving interwikis
To view the interwiki prefixes, you can use the API (action=query&meta=siteinfo&siprop=interwikimap) or install the Interwiki extension. These return the prefixes in the database table, and since MW 1.19 these will also work correctly for CDB cached interwiki prefixes. When using memcached, they will return prefixes directly from the database. This could cause a slight difference because the database may have been modified since the last cache version, but since deleted entries are removed from the memcached cache too.