The cache control header are:
|Cache-Control||Define properties for the cache such as the scope, age of the response, behavior, … (as replaced pragma)|
|Expires||Define an expiration date after which the response is considered stale.|
|Date||Used to detect clock drift and calculate expiration date (if not set based on the max-age of Cache-Control )|
|ETag and last-modified||Digest Value and time that are send back by the client in a conditonal get request to check if the resources have changed|
|Vary||Add an header value in the cache key|
Caching does not mean not hitting your web server
If the browser cache (or any other intermediate cache - proxy) has cached a file, it may send a conditional get request waiting for a 304 https status - Not Modified giving it the possibility to use its cache.
Note on Cache Bursting
- or the digest of the resource
Because the cache key is based on the URL, the new URL will be different and the cache will not be used.
If the new version used the same URL, because of the cache, the page may used the old one.
For more information, see the specific article: Web HTTP - Cache Bursting (Content fingerprinting)