> Both Memcache and APC can run in parallel so we might also consider using both

Installing APC gives you a performance boost, even if the app does not really do effort to take care of the cache.

I'm for a cache-type agnostic approach, ie one where you just cache things wherever they should be cached according to the wikis config and available caching tools. I recommend you have a look at wfGetCache in MediaWikis GlobalFunctions.php, and the related functions that can be found near it. Unfortunately there do not appear to be any docs on this. I've been using wfGetCache( CACHE_ANYTHING ) a lot recently, which can work with memc when available, but is also very effective when it's not (when stuff is stored in the db).

The main questions for this project are probably not how to cache stuff (as MediaWiki already provides the facilities you need), but rather what to cache, when to cache it, and how to properly invalidate it (if needed).

An easy place to start would be SMWs special pages such as Special:Properties, Special:Types and Special:SemanticStatistics (or something like that). There you can easily cache the HTML output, and then when the page is hit again, and is still in the cache, just use the build up HTML, sparing you the need to do any queries (except the single one obtaining the HTML) and the cost of rendering the page itself.

I wrote some generic utilities to cache special pages (for some other extension), which we might want to use here, although I think it'd be best if you just did a page without first, so you know how the stuff works, and can use it where those utilities are not helpful :)


Jeroen De Dauw
Don't panic. Don't be evil.