Start here. This is the direct spoken answer to practice first.
Why this question matters
Conditional requests let a client validate a stored representation before downloading it again. Correctness depends on the exact selected representation and its cache dimensions, not merely on whether one database row changed.
The server returns an ETag that identifies the selected representation. A client that already has that response sends the tag in If-None-Match on a later GET or HEAD. If a current validator matches, the server returns 304 Not Modified without a response body; otherwise it returns 200 with the current representation and ETag. A strong ETag requires byte-equivalent representations, while a weak ETag is suitable when semantic equivalence is enough for cache validation.