We have several sites that are mostly content managed using a sql database backend. these sites are most of the time serving up static information unless users change the content by voting or updating (similar to SO). These sites all have master pages where user specific information is often displayed at the top of each page (also similar to SO).
We want to implement output caching to prevent a db hit to get content from the db every request when 90% of the time it is unchanged from the previous requests other than the user information. What is the best way to do this? I am obviously aware of partial caching through controls but that would mean making each pages content a control, which we do not want to do.
Any suggestions? I assume SO has a caching strategy to achieve this.