MediaWiki master
|
Cache for ParserOutput objects corresponding to the latest page revisions. More...
Public Member Functions | |
__construct (string $name, BagOStuff $cache, string $cacheEpoch, HookContainer $hookContainer, JsonCodec $jsonCodec, StatsFactory $stats, LoggerInterface $logger, TitleFactory $titleFactory, WikiPageFactory $wikiPageFactory, GlobalIdGenerator $globalIdGenerator) | |
Setup a cache pathway with a given back-end storage mechanism. | |
deleteOptionsKey (PageRecord $page) | |
get (PageRecord $page, $popts, $useOutdated=false) | |
Retrieve the ParserOutput from ParserCache. | |
getCacheStorage () | |
Get the backend BagOStuff instance that powers the parser cache. | |
getDirty (PageRecord $page, $popts) | |
Retrieve the ParserOutput from ParserCache, even if it's outdated. | |
getMetadata (PageRecord $page, int $staleConstraint=self::USE_ANYTHING) | |
Returns the ParserCache metadata about the given page considering the given options. | |
makeParserOutputKey (PageRecord $page, ParserOptions $options, array $usedOptions=null) | |
Get a key that will be used by the ParserCache to store the content for a given page considering the given options and the array of used options. | |
save (ParserOutput $parserOutput, PageRecord $page, $popts, $cacheTime=null, $revId=null) | |
setFilter (ParserCacheFilter $filter) | |
Public Attributes | |
const | USE_CURRENT_ONLY = 0 |
Constants for self::getKey() | |
const | USE_EXPIRED = 1 |
Use expired data if current data is unavailable. | |
const | USE_OUTDATED = 2 |
Use expired data or data from different revisions if current data is unavailable. | |
Protected Member Functions | |
convertForCache (CacheTime $obj, string $key) | |
Cache for ParserOutput objects corresponding to the latest page revisions.
The ParserCache is a two-tiered cache backed by BagOStuff which supports varying the stored content on the values of ParserOptions used during a page parse.
First tier is keyed by the page ID and stores ParserCacheMetadata, which contains information about cache expiration and the list of ParserOptions used during the parse of the page. For example, if only 'dateformat' and 'userlang' options were accessed by the parser when producing output for the page, array [ 'dateformat', 'userlang' ] will be stored in the metadata cache. This means none of the other existing options had any effect on the output.
The second tier of the cache contains ParserOutput objects. The key for the second tier is constructed from the page ID and values of those ParserOptions used during a page parse which affected the output. Upon cache lookup, the list of used option names is retrieved from tier 1 cache, and only the values of those options are hashed together with the page ID to produce a key, while the rest of the options are ignored. Following the example above where only [ 'dateformat', 'userlang' ] options changed the parser output for a page, the key will look like 'page_id!dateformat=default:userlang=ru'. Thus any cache lookup with dateformat=default and userlang=ru will hit the same cache entry regardless of the values of the rest of the options, since they were not accessed during a parse and thus did not change the output.
Definition at line 71 of file ParserCache.php.
ParserCache::__construct | ( | string | $name, |
BagOStuff | $cache, | ||
string | $cacheEpoch, | ||
HookContainer | $hookContainer, | ||
JsonCodec | $jsonCodec, | ||
StatsFactory | $stats, | ||
LoggerInterface | $logger, | ||
TitleFactory | $titleFactory, | ||
WikiPageFactory | $wikiPageFactory, | ||
GlobalIdGenerator | $globalIdGenerator ) |
Setup a cache pathway with a given back-end storage mechanism.
This class use an invalidation strategy that is compatible with MultiWriteBagOStuff in async replication mode.
string | $name | |
BagOStuff | $cache | |
string | $cacheEpoch | Anything before this timestamp is invalidated |
HookContainer | $hookContainer | |
JsonCodec | $jsonCodec | |
StatsFactory | $stats | |
LoggerInterface | $logger | |
TitleFactory | $titleFactory | |
WikiPageFactory | $wikiPageFactory | |
GlobalIdGenerator | $globalIdGenerator |
Definition at line 153 of file ParserCache.php.
|
protected |
CacheTime | $obj | |
string | $key |
Definition at line 719 of file ParserCache.php.
ParserCache::deleteOptionsKey | ( | PageRecord | $page | ) |
PageRecord | $page |
Definition at line 190 of file ParserCache.php.
References MediaWiki\DAO\WikiAwareEntity\assertWiki().
ParserCache::get | ( | PageRecord | $page, |
$popts, | |||
$useOutdated = false ) |
Retrieve the ParserOutput from ParserCache.
false if not found or outdated.
PageRecord | $page | |
ParserOptions | $popts | |
bool | $useOutdated | (default false) |
Definition at line 365 of file ParserCache.php.
References MediaWiki\DAO\WikiAwareEntity\assertWiki(), MediaWiki\Page\PageIdentity\exists(), and MediaWiki\Page\PageRecord\isRedirect().
ParserCache::getCacheStorage | ( | ) |
Get the backend BagOStuff instance that powers the parser cache.
Definition at line 626 of file ParserCache.php.
ParserCache::getDirty | ( | PageRecord | $page, |
$popts ) |
Retrieve the ParserOutput from ParserCache, even if it's outdated.
PageRecord | $page | |
ParserOptions | $popts |
Definition at line 203 of file ParserCache.php.
References MediaWiki\DAO\WikiAwareEntity\assertWiki().
ParserCache::getMetadata | ( | PageRecord | $page, |
int | $staleConstraint = self::USE_ANYTHING ) |
Returns the ParserCache metadata about the given page considering the given options.
PageRecord | $page | |
int | $staleConstraint | one of the self::USE_ constants |
Definition at line 265 of file ParserCache.php.
ParserCache::makeParserOutputKey | ( | PageRecord | $page, |
ParserOptions | $options, | ||
array | $usedOptions = null ) |
Get a key that will be used by the ParserCache to store the content for a given page considering the given options and the array of used options.
PageRecord | $page | |
ParserOptions | $options | |
array | null | $usedOptions | Defaults to all cache varying options. |
Definition at line 339 of file ParserCache.php.
ParserCache::save | ( | ParserOutput | $parserOutput, |
PageRecord | $page, | ||
$popts, | |||
$cacheTime = null, | |||
$revId = null ) |
ParserOutput | $parserOutput | |
PageRecord | $page | |
ParserOptions | $popts | |
string | null | $cacheTime | TS_MW timestamp when the cache was generated |
int | null | $revId | Revision ID that was parsed |
Definition at line 448 of file ParserCache.php.
References MediaWiki\Parser\ParserOutput\addCacheMessage(), MediaWiki\DAO\WikiAwareEntity\assertWiki(), CacheTime\getCacheExpiry(), CacheTime\getCacheRevisionId(), CacheTime\getCacheTime(), MediaWiki\Page\PageRecord\getLatest(), MediaWiki\Parser\ParserOutput\getRenderId(), CacheTime\getUsedOptions(), CacheTime\hasCacheTime(), MediaWiki\Parser\ParserOutput\hasText(), CacheTime\recordOptions(), CacheTime\setCacheRevisionId(), CacheTime\setCacheTime(), and MediaWiki\Parser\ParserOutput\setRenderId().
ParserCache::setFilter | ( | ParserCacheFilter | $filter | ) |
const ParserCache::USE_CURRENT_ONLY = 0 |
Constants for self::getKey()
Definition at line 79 of file ParserCache.php.
const ParserCache::USE_EXPIRED = 1 |
Use expired data if current data is unavailable.
Definition at line 82 of file ParserCache.php.
const ParserCache::USE_OUTDATED = 2 |
Use expired data or data from different revisions if current data is unavailable.
Definition at line 85 of file ParserCache.php.