Ok, so the first interesting part is that instead of caching the result of a database request we cache the complete rendered result. And the bigger rendered parts are just constructed by combining the smaller (also cached) parts, right?
How does the application learn which version an element is at right now? Don't you have to call the database to find out?