I wrote a parser tag that displays some user options that are set in 
Special:Preference. It gets embedded in an article like this:

<mystuff/>

However, when users change their options, my parser tag appears still displays 
old, cached data. I have tried everything I can think of to stop this caching:

static function myHookFunction($input, $args, $parser) {
    $parser->disableCache();
    global $wgEnableParserCache, $wgCachePages, $wgParser;
    $wgParser->disableCache();
    $wgEnableParserCache = false;
    $wgCachePages = false;
    ...
}

But all of this has no effect.  The only way to get the new data to appear is 
to edit the page or use ?action=purge.

Coincidentally, I have another extension that displays the same data (not using 
a parser tag, but an ordinary callback via $wgHooks['OutputPageBeforeHTML']), 
and the data is always up to date.

Both extensions use User::newFromName($username) to obtain User objects, and 
$user->getOption() to get the values. But I don't think the User class is 
causing this. When I make code changes to my parser tag, I don't even see the 
results of the changes until I edit the page or use ?action=purge.

We are not running any other external caches at the PHP or web level.

What am I missing?

Thanks,
DanB

_______________________________________________
MediaWiki-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l

Reply via email to