User:Aaron Schulz/How to make MediaWiki fast

1. Install xcache, eAccelerator, or APC

2. To localsettings.php, add (replace dirs as needed):  $wgMainCacheType = CACHE_ACCEL; $wgMessageCacheType = CACHE_ACCEL; $wgCacheDirectory = 'C:\Server\xampp\htdocs\MW_trunk\MsgCache'; $wgParserCacheType = CACHE_ACCEL; $wgMemCachedServers = array; $wgUseFileCache = true; $wgFileCacheDirectory = 'C:\Server\xampp\htdocs\MW_trunk\cache'; $wgUseGzip = true; $wgEnableSidebarCache = true; $wgDisableCounters = true; $wgMiserMode = true; $wgCompressRevisions = true; $wgRevisionCacheExpiry = 3*24*3600; $wgParserCacheExpireTime = 14*24*3600; $wgDiff = 'C:/Server/xampp/htdocs/MW/bin/GnuWin32/bin/diff.exe'; $wgDiff3 = 'C:/Server/xampp/htdocs/MW/bin/GnuWin32/bin/diff3.exe'; /***********/  3. Set the $wgFileCacheDirectory if you want to use file caching. On a larger site, you should use squid servers instead of file caching.
 * 1) Shared memory settings
 * 1) File cache!
 * 1) NO DB HITS!
 * 1) Text cache
 * 1) Diffs

4. Set $wgCacheDirectory as needed (for message caching).

5. Set up Memcached if possible. If you do, set $wgMainCacheType and $wgParserCacheType to CACHE_MEMCACHED in localsettings.php instead. This is recommended if you have a cluster of servers.

6. Run maintenance/rebuildFileCache.php if you use file caching (not squids).

7. Set $wgJobRunRate to 0 and set up a crontab or shell script to run jobs (like this with this for example). With $wgJobRunRate at 0 and the above changes, you should be able to avoid db hits on many requests.

8. Set $wgDiff and $wgDiff3 to gnu diff utility (download as needed). This is recommended. The default PHP diff code is slow and crashy.

9. Edit the MediaWiki:Aboutsite and MediaWiki:Pagetitle system messages by changing into your site name. This avoids extra parsing on each hit.