If you're testing on the command line to determine an object's caching status, then use GET instead of HEAD. For example:
1 $ curl -svo /dev/null www.example.com
Default caching behavior of HTTP verbs
By default, the results of GET requests are cached. HEAD requests are not proxied as is, but are handled locally if an object is in cache or a GET is done to the backend to get the object into the cache. Anything other than HEAD or GET requests are proxied and not cached by default.