I have a static image which will expire in 9 minutes. It has following headers set by the server:
Cache-control: max0age=523 Expires: Thu, 27 Aug 2015 23:28:14 GMT (in 5 minutes) Last-Modified:Wed, 12 Nov 2014 08:06:06 GMT
When I refresh the page browser makes request to server instead of serving it from the cache. As expected it gets 304 from server.
Screenshot from Chrome dev tools below:

I compared it with resource cached with same headers (max-age and last-modified) and seeing that content gets served directly from cache:
So basically I have two questions:
- Why Chrome does not serve image from cache and validates it against server?
- Why same not applies to my second example with js file from Bing.com and it served directly from cache? Is it because "public" specified in cache-control or aggressive expiration date?
Some clarifications:
- I'm refreshing the page in both examples.
- I am not doing hard refresh (Crtl+R or Ctrl+F5).
- It is not because of dev tools opened, I tried to close dev tools and I'm seeing same in Fiddler.
