An ETag is a value the server associates with a specific version of a response. It is not a timestamp, though people use timestamps as a lazy cousin. It is a fingerprint: “this is representation X”.
The client stores it, then later sends If-None-Match. If the fingerprint still matches, the server can answer 304 Not Modified and skip the body.
That is caching as HTTP, not caching as Redis. It can surprise you if a middleware always returns 304, or if your fingerprint changes when the body did not (or does not change when it should).
I have a draft in the Problem Log for the day this bites me with numbers attached. Until then: 304 means “you already have it”, not “the resource is gone”.