Shane King wrote:
Remember that a change to one page can cause changes to other pages, and those other pages all need to be updated. We don't really seem to have a great system for working out the "dependencies" of a page change at the moment, it seems when you include pages with {{}} you often have to flush the cache to get them to re-render correctly. If you do decide to rip the caching system apart, I hope you pay attention to this area, since it's quite annoying.
Template cache invalidation is far from ideal. The problem is that template inclusions are stored in the link table, there's no way to tell the difference between links and inclusions. We use a kind of heuristic -- we assume that all links to a page in the Template namespace are inclusions. When a page in the Template namespace is changed, all pages linking to it are invalidated. Many templates are outside the template namespace, so they don't update their referring pages properly.
We're getting quite a large collection of different link tables, and Brion and I agree that it would be better if we merged them, with a "link type" field, rather than adding yet another table.
-- Tim Starling