https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/ETag
ETag HTTP 응답 헤더는 특정 버전의 리소스를 식별하는 식별자입니다. 웹 서버가 내용을 확인하고 변하지 않았으면, 웹 서버로 full 요청을 보내지 않기 때문에, 캐쉬가 더 효율적이게 되고, 대역폭도 아낄 수 있습니다. 허나, 만약 내용이 변경되었다면, "mid-air collisions" 이라는 리소스 간의 동시 다발적 수정 및 덮어쓰기 현상을 막는데 유용하게 사용됩니다.
만약 특정 URL 의 리소스가 변경된다면, 새로운 ETag 가 생성됩니다. ETag 는 지문과 같은 역할을 하면서 다른 서버들이 추적하는 용도에 이용되기도 합니다. ETag 를 비교하여 리소스가 서로 같은지의 여부를 빠르게 판단할 수 있지만, 서버에서 무기한으로 지속될 수 있도록 설정할 수도 있습니다.
gpt 의 도움을 받아 쉬운 말로
브라우저는 서버로부터 자원을 요청할 때 이전에 받은 ETag 값을 If-None-Match HTTP 헤더에 포함시켜 전송합니다. 이를 통해 서버는 해당 ETag가 자신이 가진 자원의 태그와 일치하는지 비교할 수 있습니다. 만약 일치한다면, 서버는 자원의 내용을 다시 전송하지 않고 304 Not Modified 응답을 보내어 브라우저가 캐시된 내용을 사용하도록 합니다.
클라이언트에서 데이타를 받기위해 브라우저 단에서 ETag 헤더를 사용하여 최신정보를 확인
만약 변경값이 없다면 추가 데이터를 받지 않고 최초 통신에서 저장된 데이터의 캐시를 활용한다 라고 이해 하였다.
최초 ETag 값을 저장해두고 다음에 다시 요청할때 ETag 값을 비교하여 변경되었는지 확인 후 변경되지 않았다면 캐시된 페이지를 보여주는 캐싱 기술
자세한 내용은 아래에 잘 정리 되었다
https://yozm.wishket.com/magazine/detail/1772/
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-Powered-By: Express
< Accept-Ranges: bytes
< Cache-Control: public, max-age=0
< Last-Modified: Fri, 04 Sep 2020 15:48:51 GMT
< ETag: W/"7b-17459ce6217"
< Content-Type: text/html; charset=UTF-8
< Content-Length: 123
< Date: Fri, 04 Sep 2020 15:51:32 GMT
< Connection: keep-alive
<
<!DOCTYPE html>