HTTP: Generating ETag Header
As long as it changes whenever the resource representation changes, how you produce it is completely up to you. You should try to produce it in a way that additionally: doesn’t require you to re-compute it on each conditional GET, and doesn’t change if the resource content hasn’t changed Using hashes of content can cause … Read more