X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;ds=sidebyside;f=includes%2Fparser%2FParserCache.php;h=f91f26a2ffadbbd01d4837f876d338a16955869f;hb=b3197063523e629589112d3ccd7871b8591ff9aa;hp=9515859c972f8236c6afa4d08c1b29f0b2c1f9dc;hpb=896f05efded0deb66c0382adb4bcfe2379c5b655;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/parser/ParserCache.php b/includes/parser/ParserCache.php index 9515859c97..f91f26a2ff 100644 --- a/includes/parser/ParserCache.php +++ b/includes/parser/ParserCache.php @@ -80,7 +80,7 @@ class ParserCache { */ function getETag( $article, $popts ) { return 'W/"' . $this->getParserOutputKey( $article, - $popts->optionsHash( ParserOptions::legacyOptions() ) ) . + $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) ) . "--" . $article->getTouched() . '"'; } @@ -130,7 +130,7 @@ class ParserCache { $usedOptions = ParserOptions::legacyOptions(); } - return $this->getParserOutputKey( $article, $popts->optionsHash( $usedOptions ) ); + return $this->getParserOutputKey( $article, $popts->optionsHash( $usedOptions, $article->getTitle() ) ); } /** @@ -165,17 +165,23 @@ class ParserCache { $value = $this->mMemc->get( $parserOutputKey ); if ( self::try116cache && !$value && strpos( $value, '*' ) !== -1 ) { wfDebug( "New format parser cache miss.\n" ); - $parserOutputKey = $this->getParserOutputKey( $article, $popts->optionsHash( ParserOptions::legacyOptions() ) ); + $parserOutputKey = $this->getParserOutputKey( $article, + $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) ); $value = $this->mMemc->get( $parserOutputKey ); } if ( !$value ) { - wfDebug( "Parser cache miss.\n" ); + wfDebug( "ParserOutput cache miss.\n" ); wfIncrStats( "pcache_miss_absent" ); wfProfileOut( __METHOD__ ); return false; } - wfDebug( "Found.\n" ); + wfDebug( "ParserOutput cache found.\n" ); + + // The edit section preference may not be the appropiate one in + // the ParserOutput, as we are not storing it in the parsercache + // key. Force it here. See bug 31445. + $value->setEditSectionTokens( $popts->getEditSection() ); if ( !$useOutdated && $value->expired( $touched ) ) { wfIncrStats( "pcache_miss_expired" ); @@ -194,7 +200,6 @@ class ParserCache { * @param $parserOutput ParserOutput * @param $article Article * @param $popts ParserOptions - * @return void */ public function save( $parserOutput, $article, $popts ) { $expire = $parserOutput->getCacheExpiry(); @@ -212,10 +217,10 @@ class ParserCache { $optionsKey->setContainsOldMagic( $parserOutput->containsOldMagic() ); $parserOutputKey = $this->getParserOutputKey( $article, - $popts->optionsHash( $optionsKey->mUsedOptions ) ); + $popts->optionsHash( $optionsKey->mUsedOptions, $article->getTitle() ) ); // Save the timestamp so that we don't have to load the revision row on view - $parserOutput->mTimestamp = $article->getTimestamp(); + $parserOutput->setTimestamp( $article->getTimestamp() ); $parserOutput->mText .= "\n\n"; wfDebug( "Saved in parser cache with key $parserOutputKey and timestamp $now\n" );