From c7620a7106b77344d11b756271e9ab70cd00373f Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Mon, 22 Nov 2004 01:16:44 +0000 Subject: [PATCH] Let the parser cache use the objectcache table if memcached isn't set up, and enable it by default. This provides significant speedups on medium to long pages, though for busier sites the garbage collection probably should be adjusted. --- includes/ParserCache.php | 25 ++++++++++++++++--------- includes/Setup.php | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/includes/ParserCache.php b/includes/ParserCache.php index ed4384dbbd..fce8ed33cf 100644 --- a/includes/ParserCache.php +++ b/includes/ParserCache.php @@ -8,8 +8,17 @@ * * @package MediaWiki */ -class ParserCache -{ +class ParserCache { + /** + * Setup a cache pathway with a given back-end storage mechanism. + * May be a memcached client or a BagOStuff derivative. + * + * @param object $memCached + */ + function ParserCache( &$memCached ) { + $this->mMemc =& $memCached; + } + function getKey( &$article, &$user ) { global $wgDBname; $hash = $user->getPageRenderingHash(); @@ -19,7 +28,7 @@ class ParserCache } function get( &$article, &$user ) { - global $wgMemc, $wgCacheEpoch; + global $wgCacheEpoch; $fname = 'ParserCache::get'; wfProfileIn( $fname ); @@ -27,7 +36,7 @@ class ParserCache $pageid = intval( $article->getID() ); $key = $this->getKey( $article, $user ); wfDebug( "Trying parser cache $key\n" ); - $value = $wgMemc->get( $key ); + $value = $this->mMemc->get( $key ); if ( is_object( $value ) ) { wfDebug( "Found.\n" ); # Delete if article has changed since the cache was made @@ -40,7 +49,7 @@ class ParserCache } else { wfDebug( "Key expired, touched $touched, epoch $wgCacheEpoch, cached $cacheTime\n" ); } - $wgMemc->delete( $key ); + $this->mMemc->delete( $key ); $value = false; } } else { @@ -53,20 +62,18 @@ class ParserCache } function save( $parserOutput, &$article, &$user ){ - global $wgMemc; - $key = $this->getKey( $article, $user ); $now = wfTimestampNow(); $parserOutput->setCacheTime( $now ); $parserOutput->mText .= "\n\n"; + wfDebug( "Saved in parser cache with key $key and timestamp $now\n" ); if( $parserOutput->containsOldMagic() ){ $expire = 3600; # 1 hour } else { $expire = 86400; # 1 day } - - $wgMemc->set( $key, $parserOutput, $expire ); + $this->mMemc->set( $key, $parserOutput, $expire ); } } diff --git a/includes/Setup.php b/includes/Setup.php index f0d135f46a..46bd30bc90 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -343,7 +343,7 @@ $wgDeferredUpdateList = array(); $wgLinkCache = new LinkCache(); $wgMagicWords = array(); $wgMwRedir =& MagicWord::get( MAG_REDIRECT ); -$wgParserCache = new ParserCache(); +$wgParserCache = new ParserCache( $messageMemc ); if ( $wgUseXMLparser ) $wgParser = new ParserXML(); else $wgParser = new Parser(); -- 2.20.1