ETag(Entity Tag)와 Last-Modified
서버의 리소스와 캐싱된 리소스를 확인을 하기 위해 ETag를 비교하거나 Last-Modified(마지막 수정일)를 비교한다.
📌 ETag(Entity Tag)
서버가 리소스의 특정 버전에 대해 생성하는 고유 식별자
리소스의 내용이 변경되면 ETag 값도 변경된다.
클라이언트가 캐시된 리소스를 사용할 수 있는지 확인하는 데 사용한다.
서버는 클라이언트가 제공한 ETag 값과 현재 리소스의 ETag 값을 비교한다.
🧿 작동 방식
=> 클라이언트는 서버에 리소스를 요청할 때 If-None-Match 키를 사용하여 이전에 받은 ETag 값을 전달한다.
1. 서버가 리소스를 클라이언트에 전달할 때 ETag 헤더를 함께 보낸다.
2. 이후 클라이언트는 요청을 보낼 때, If-None-Match 헤더에 ETag 값을 포함하여 서버에 요청한다.
3. 서버는 클라이언트가 제공한 ETag 값과 현재 리소스의 ETag 값을 비교한다.
- 값이 같으면 304 Not Modified 응답을 보내고, 클라이언트는 캐시된 리소스를 사용한다.
- 값이 다르면 변경된 리소스를 200 OK와 함께 전달한다.
📌 Last-Modified 헤더
리소스가 마지막으로 수정된 날짜와 시간을 나타내는 헤더
클라이언트가 리소스의 최신 상태를 확인하는 데 사용된다.
🧿 작동 방식
1. 서버가 리소스를 클라이언트에 전달할 때 Last-Modified 헤더를 포함한다.
2. 이후 클라이언트는 요청을 보낼 때, If-Modified-Since 헤더에 Last-Modified 값을 포함하여 서버에 요청한다.
3. 서버는 리소스의 실제 수정 시간과 클라이언트가 보낸 시간을 비교한다.
- 값이 같으면 304 Not Modified 응답을 보내고, 클라이언트는 캐시된 리소스를 사용한다.
- 값이 다르면 변경된 리소스를 200 OK와 함께 전달한다.
참고&츌쳐
https://blog.naver.com/youngchanmm/222189300544
https://jjshun.tistory.com/59
https://joochang.tistory.com/37
https://velog.io/@gil0127/%EA%B2%80%EC%A6%9D-%ED%97%A4%EB%8D%94%EC%99%80-%EC%A1%B0%EA%B1%B4%EB%B6%80-%EC%9A%94%EC%B2%AD-1