Optimized wfIsBadImage() redirect check
authorAaron Schulz <aschulz@wikimedia.org>
Sun, 27 Sep 2015 05:14:41 +0000 (22:14 -0700)
committerReedy <reedy@wikimedia.org>
Sun, 27 Sep 2015 14:43:39 +0000 (14:43 +0000)
* Callers end up hitting wfFindFile() anyway, so we
  may as well use/prime the process cache. By trying
  to call checkRedirect() manually, it actually just
  caused an extra memcached query.
* 404 pages are often customized to show various
  icons file from sister sites, so this was taking
  up a significant portion of rendering time.

Change-Id: I7e2a1c6acf853629fcca3a8b3c2c810ebacd2acb

includes/GlobalFunctions.php

index c524948..6fbc11d 100644 (file)
@@ -4072,11 +4072,10 @@ function wfUnpack( $format, $data, $length = false ) {
  * @return bool
  */
 function wfIsBadImage( $name, $contextTitle = false, $blacklist = null ) {
-       # Handle redirects
-       $redirectTitle = RepoGroup::singleton()->checkRedirect( Title::makeTitle( NS_FILE, $name ) );
-       if ( $redirectTitle ) {
-               $name = $redirectTitle->getDBkey();
-       }
+       # Handle redirects; callers almost always hit wfFindFile() anyway,
+       # so just use that method because it has a fast process cache.
+       $file = wfFindFile( $name ); // get the final name
+       $name = $file ? $file->getTitle()->getDBkey() : $name;
 
        # Run the extension hook
        $bad = false;