From: Aaron Schulz Date: Sun, 11 Sep 2016 13:13:20 +0000 (-0700) Subject: Reduce WikiPage::getContentModel() queries via caching X-Git-Tag: 1.31.0-rc.0~5582^2 X-Git-Url: http://git.cyclocoop.org/%7B%7B%20url_for%28%27admin_vote_add%27%29%20%7D%7D?a=commitdiff_plain;h=b0dc2c755b081e4783b265a55bfd95fe076b6349;p=lhc%2Fweb%2Fwiklou.git Reduce WikiPage::getContentModel() queries via caching Change-Id: I3b25be5e2b456d495cd89da9ef88cf3a2f83cbdf --- diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index d5dfd3d00a..b09ef0d057 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -488,15 +488,23 @@ class WikiPage implements Page, IDBAccessObject { */ public function getContentModel() { if ( $this->exists() ) { - // look at the revision's actual content model - $rev = $this->getRevision(); - - if ( $rev !== null ) { - return $rev->getContentModel(); - } else { - $title = $this->mTitle->getPrefixedDBkey(); - wfWarn( "Page $title exists but has no (visible) revisions!" ); - } + $cache = ObjectCache::getMainWANInstance(); + + return $cache->getWithSetCallback( + $cache->makeKey( 'page', 'content-model', $this->getLatest() ), + $cache::TTL_MONTH, + function () { + $rev = $this->getRevision(); + if ( $rev ) { + // Look at the revision's actual content model + return $rev->getContentModel(); + } else { + $title = $this->mTitle->getPrefixedDBkey(); + wfWarn( "Page $title exists but has no (visible) revisions!" ); + return $this->mTitle->getContentModel(); + } + } + ); } // use the default model for this page