Just to note that this question is from a server perspective, where the server in principle only needs to calculate an Etag when a resource changes.
The Etag absolutely must still be sent on every client request because the resource on the server might have changed between requests by any given client
ETags are managed by the server to allow a hub and spoke model where clients are responsible for conflict resolution and the server is responsible for naming versions.