Avoid caching empty directory lists.

Change-Id: I574043a240018043126e2b1b05b08bf7e23610d6
This commit is contained in:
Aaron Schulz 2012-12-31 16:36:02 -08:00
parent d4a6dd553e
commit 3589fc100b

View file

@ -159,7 +159,7 @@ class FancyCaptcha extends SimpleCaptcha {
$key = "fancycaptcha:dirlist:{$backend->getWikiId()}:" . sha1( $directory );
$dirs = $wgMemc->get( $key ); // check cache
if ( !is_array( $dirs ) ) { // cache miss
if ( !is_array( $dirs ) || !count( $dirs ) ) { // cache miss
$dirs = array(); // subdirs actually present...
foreach ( $backend->getTopDirectoryList( array( 'dir' => $directory ) ) as $entry ) {
if ( ctype_xdigit( $entry ) && strlen( $entry ) == 1 ) {
@ -167,7 +167,9 @@ class FancyCaptcha extends SimpleCaptcha {
}
}
wfDebug( "Cache miss for $directory subdirectory listing.\n" );
$wgMemc->set( $key, $dirs, 86400 );
if ( count( $dirs ) ) {
$wgMemc->set( $key, $dirs, 86400 );
}
}
if ( !count( $dirs ) ) {
@ -204,7 +206,7 @@ class FancyCaptcha extends SimpleCaptcha {
$key = "fancycaptcha:filelist:{$backend->getWikiId()}:" . sha1( $directory );
$files = $wgMemc->get( $key ); // check cache
if ( !is_array( $files ) ) { // cache miss
if ( !is_array( $files ) || !count( $files ) ) { // cache miss
$files = array(); // captcha files
foreach ( $backend->getTopFileList( array( 'dir' => $directory ) ) as $entry ) {
$files[] = $entry;
@ -213,7 +215,9 @@ class FancyCaptcha extends SimpleCaptcha {
break;
}
}
$wgMemc->set( $key, $files, 86400 );
if ( count( $files ) ) {
$wgMemc->set( $key, $files, 86400 );
}
wfDebug( "Cache miss for $directory captcha listing.\n" );
}