I am trying to set up caching correctly and have set Expires headers to 365 days in the future which is working correctly but not showing correctly in IE9. Does anyone know
Just to be clear, if you don't see it in Fiddler, it didn't hit the network.
The IE Network tab has a number of bugs-- one of them is that it has a hard time distinguishing between a cache hit satisfied locally (e.g. no network hit) and one that required revalidation with the server (e.g. a 304).
That's because the cache is serviced down in WinINET, well below the Network tab, which lives up above URLMon.
Having said that, here's another reference you may want to check out: IEInternals Blog on Conditional Requests