ASP.NET 2.0: asp:substitution (post-cache substitution)
The new <asp:substitution> control gives you a placeholder into which you can write dynamic content when using output caching. That is GREAT stuff! It always bothered me when I could not use output caching because of something simple like a personalized logout link (e.g., You are logged in as derekhatchard, click here to logoff). It's reasonable to expect that the throughput gain will be less than “pure” output caching, but every bit helps.
Apparently the AdRotator has been rewritten to take advantage of post-cache substitution so you can use output caching on a page but the AdRotator will still rotate ads appropriately.
I haven't tested this out yet, but I'm glad to see it.