I have a number of related questions regarding MediaWiki's caching
mechanism. I would be grateful if one could answer these please. The
assumption here is that a wiki is configured using the exact same caching
methods that Wikimedia uses.
Please feel free to provide links to
https://www.mediawiki.org as well as
https://noc.wikimedia.org when specifying configuration variables in your
answers as I am sure this would benefit future readers of this thread as
well.
Q1: Page [[foo]] contains template {{bar}}. I edit that template, but the
page is not immediately updated. If I don't manually purge the cache of
that page, how long would it take for the page cache to be updated? Which
variable sets that time? And what is the value of that variable currently
at Wikimedia wikis?
Q2: Page [[foo]] contains template {{bar}}, and that template provides a
link to page [[norf]]. I edit the template such that it instead links to
page [[qux]]. However, when I go to Special:WhatLinksHere/norf I still see
[[foo]] listed. Even if I try ?action=purge on [[foo]], that behavior
doesn't change. The only way to change it is either to edit [[foo]] and
change its content, or to simply go to the edit page of [[foo]] and save
without changes.
Q2.A: If I don't do that null edit, how long would it take for the page
cache to be updated? Which variable sets that time? And what is the value
of that variable currently at Wikimedia wikis?
Q2.B: Why is it that ?action=purge doesn't update the pagelinks table?
Q2.C: Why is it that saving a page without any edits triggers any update
mechanism? (I would assume it'd be less costly overall to say "if diff is
null, don't do anything at all"; this question is more philosophical: why
would we not like the quoted behavior?
Q2.D: Does the Special:WhatLinksHere results come from a cache? In other
words, if I query the database directly right after I change the template
(as mentioned in Q2) but before I do any null edits, would it still show
the old page link from [[foo]] to [[norf]]? Or would it show the correct
link from [[foo]] to [[qux]] while Special:WhatLinksHere is still showing
the old link?
Q2.E: Is it possible to induce the same "resolution" through API? That is,
is it possible to try to save a page without any changes to its content via
API, and thereby forcefully update the page links entries for that page?
Q3: Assume that 100 pages contain template {{bar}}, and that template
provides a link to page [[norf]]. I edit the template such that it instead
links to page [[qux]]. Would that add any jobs to the job queue? If yes,
how many? Should I expect 100 new jobs to be added, because 100 page
cache's need updating?
Thanks in advance,
Huji