We are concentrating on an issue whereby I.E. seems to ignore our cache-control headers. Some years back we began adding a max-age response header to speed up initial page hits on a new browser launch. This stops the browser from doing a content update check (304 return code) until the content expires and significantly improved the performance of the web sites doing this. While researching a performance problem we have observed that max-age no longer has any effect. We have tested on IE7, 8 and 9 internally, both XP and 7.
It could be a problem with Internet Explorer not handling cached content the way we expect it to. The effect in the US is minimal, but in our international offices, it accounts for a noticeable slowdown.
When many 304 requests happen on initial startup, as is our case, the performance of the web site is badly impacted.
So bottom line, any content with a max-age set on initial fetch, should never make a request to the web server until it has expired, and no 304's should be observed.