The max-age
directive specifies the time, in seconds, after which the client should consider that the content at the given URL is invalid.
This means that if you have a max-age of 10 minutes, get the resource at instant t, then if you need the content at t + 9 minutes for instance, it will not be fetched. But its expiry date remains unchanged on the client side.
Which means at any instant after t + 10 minutes, the content will be fetched again, and its expiry time recalculated (since it may have changed in the meanwhile).
At least, that is how clients should operate.
max-age=0 is the equivalent of "always fetch that resource again".