Merge "Add in-process cache for result of getPageImage() DB query"

This commit is contained in:
jenkins-bot 2022-11-17 16:21:41 +00:00 committed by Gerrit Code Review
commit e588a4eeff

View file

@ -7,7 +7,9 @@ use ApiMain;
use FauxRequest;
use File;
use IContextSource;
use MapCacheLRU;
use MediaWiki\Api\Hook\ApiOpenSearchSuggestHook;
use MediaWiki\Cache\CacheKeyHelper;
use MediaWiki\Hook\BeforePageDisplayHook;
use MediaWiki\Hook\InfoActionHook;
use MediaWiki\MediaWikiServices;
@ -59,6 +61,9 @@ class PageImages implements
/** @var UserOptionsLookup */
private $userOptionsLookup;
/** @var MapCacheLRU */
private static $cache = null;
/**
* @param UserOptionsLookup $userOptionsLookup
*/
@ -104,6 +109,13 @@ class PageImages implements
* @return File|bool
*/
public static function getPageImage( Title $title ) {
$cacheKey = CacheKeyHelper::getKeyForPage( $title );
if ( self::$cache === null ) {
self::$cache = new MapCacheLRU( 100 );
}
if ( self::$cache->has( $cacheKey ) ) {
return self::$cache->get( $cacheKey );
}
// Do not query for special pages or other titles never in the database
if ( !$title->canExist() ) {
return false;
@ -115,6 +127,7 @@ class PageImages implements
if ( !$title->exists() ) {
// No page id to select from
self::$cache->set( $cacheKey, false );
return false;
}
@ -134,6 +147,7 @@ class PageImages implements
$file = MediaWikiServices::getInstance()->getRepoGroup()->findFile( $fileName );
}
self::$cache->set( $cacheKey, $file );
return $file;
}