I noticed a few websites such as Yahoo and Stackoverflow having response headers that neither contains a max-age in Cache-Control setting nor a valid date in Expires setting.
Example from Stackoverflow
Cache-Control: private
Content-Encoding: gzip
Content-Length: 15328
Content-Type: text/html; charset=utf-8
Date: Thu, 03 May 2012 07:06:26 GMT
Vary: Accept-Encoding
How does the browser keeps track of the freshness of the cached representation in this case?
The browser simply doesn’t cache the page. Every time when you visit the page, the browser requests the page to server. If it doesn’t cache the page, the browser doesn’t need to keep track of the freshness of the cached representation.