Etag는 클라이언트(ex. 모바일 디바이스, 웹 브라우저 등)가 이전에 요청했던 데이터와 최신 데이터의 변경사항 유무를 검증하는 데 사용하는 HTTP 응답 헤더입니다.

클라이언트에서 최신 데이터 자료를 요청할 때(HTTP Get 요청) 응답 헤더로 Etag 값이 반환됩니다.

Etag의 값은 일반적으로 MD5 등의 Hash 함수를 이용하여 생성된 값인 Message Digest를 사용합니다.

ETag는 HTTP 캐싱, 조건부 요청, 리소스 버전 관리 등을 효과적으로 수행하기 위한 목적으로 주로 사용됩니다.

반환된 Etag의 값을 HTTP 요청 헤더 If-None-Match에 담아서 요청 데이터가 최신인지 아닌지를 검증합니다.

만약 데이터의 변경이 없어서 요청한 Etag의 값과 현재 데이터의 Etag의 값이 동일하면 HTTP 응답코드로 304 Not Modified를 반환 받습니다.

알아보니 단점이 치명적이라 잘 안 쓰는것 같았다.

단점 : ETag의 문제점은 해당 값이 서버당 하나이기 때문에 여러 서버로 운영되는 서비스일 경우 값이 일치하지 않게 된다.

HTTP response의 ETag(Entity Tag) 헤더는 주로 다음과 같은 이유로 사용됩니다.

Reference