From 6eba3f283dd45cfad5b03d3127ab01c96f847af0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Niklas=20Laxstr=C3=B6m?= Date: Sun, 27 Apr 2008 14:37:37 +0000 Subject: [PATCH] * Cache fallbacks separately to avoid loading whole localisations --- languages/Language.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/languages/Language.php b/languages/Language.php index 66cb762534..ab5a81a85d 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -176,8 +176,7 @@ class Language { } function getFallbackLanguageCode() { - $this->load(); - return $this->fallback; + return self::getFallbackFor( $this->mCode ); } /** @@ -2055,10 +2054,12 @@ class Language { # Try the global cache $memcKey = wfMemcKey('localisation', $code ); + $fbMemcKey = wfMemcKey('fallback', $cache['fallback'] ); $cache = $wgMemc->get( $memcKey ); if ( $cache ) { if ( self::isLocalisationOutOfDate( $cache ) ) { $wgMemc->delete( $memcKey ); + $wgMemc->delete( $fbMemcKey ); $cache = false; wfDebug( "Language::loadLocalisation(): localisation cache for $code had expired\n" ); } else { @@ -2147,6 +2148,7 @@ class Language { self::$mLocalisationCache[$code] = $cache; if ( !$disableCache ) { $wgMemc->set( $memcKey, $cache ); + $wgMemc->set( $fbMemcKey, $cache['fallback'] ); } wfProfileOut( __METHOD__ ); @@ -2180,8 +2182,19 @@ class Language { * Get the fallback for a given language */ static function getFallbackFor( $code ) { + global $wgMemc; + $memcKey = wfMemcKey('fallback', $code ); + $fbcode = $wgMemc->get( $memcKey ); + + if ( $fbcode !== null ) { + wfDebug( __METHOD__ . ": got fallback for $code from memc: $fbcode\n" ); + return $fbcode; + } + self::loadLocalisation( $code ); - return self::$mLocalisationCache[$code]['fallback']; + $fbcode = self::$mLocalisationCache[$code]['fallback']; + $wgMemc->set( $memcKey, $fbcode ); + return $fbcode; } /** -- 2.20.1