Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

검증 헤더와 조건 부 요청 2 본문

인프런/[인프런]모든 개발자를 위한 HTTP 웹 기본 지식

검증 헤더와 조건 부 요청 2

Seung__ 2021. 8. 4. 22:50

1. 검증 헤더


  • 캐시 데이터와 서버 데이터가 같은지 검증하는 데이터
  • Last-Modified, ETag

 

2. 조건 부 요청 헤더


  • 검증 헤더로 조건에 따른 분기
  • If-Modified-Since: Last-Modified 사용
  • If-None-Match: ETag 사용
  • 조건이 만족하면 200 OK
  • 조건이 만족하지 않으면 304Not Modified

 

 

3. If-Modified-Since 사용 예시


  • 서버측 데이터 미 변경 시
    - 캐시 : 2020년 11월 10일 10:00:00 vs 서버 :  2020년 11월 10일 10:00:00
    - 해당 조건이 만족하지 않으니 304 Not Modified 및 헤더 데이터만 전송(Body 없음)
    - 3xx : 리다이렉션? 어디로? 캐시로!
  • 서버측 데이터 변경 시
    - 캐시 : 2020년 11월 10일 10:00:00 vs 서버 :  2020년 11월 10일 11:00:00
    - 해당 조건이 만족함. 200 OK 및 모든 데이터 전송(Body 포함)

 

 

4. Last-Modified, If-Modified-Since의 단점


  • 1초 미만 단위로 캐시 조정이 불가능
  • 날짜 기반의 로직 사용
  • 데이터를 수정해서 날짜가 다르지만, 같은 데이터를 수정해서 데이터 결과가 똑같은 경우 다르다고 판단함.
    (데이터 변경했다가 원복한 경우 ㅋㅋ)
  • 날짜 기반이 아니라 서버에서 별도의 캐시 로직을 관리하고 싶은 경우

 

 

5. ETag, If-None-Match


  • ETag(Entity Tag)
  • 캐시 용 데이터에 임의의 고유한 버전 이름을 달아둠
    - ETag: "v1.0", ETag:"aaaaa"
  • 데이터가 변경되면 이 이름을 바꿔서 변경함(Hash를 다시 생성)
    - ETag: "aaaaa" -> ETag: "bbbbb"
  • 진짜 단순하게 ETag만 보내서 같으면 유지, 다르면 다시 받는 방법임!
  • 날짜 기반이 아니라 실제 파일 내용 기반으로됨.

 

 

6. ETag, If-Non-Match 사용 예시


  • 클라이언트가 요청을 보냄
  • 서버는 응답 메시지 보냄
    HTTP/1.1 200 OK
    Content-Type: image/ipeg
    cache-control: max-age=60
    ETag: "aaaaa"
    Content-Length: 34012
  • 클라이언트는 응답 결과를 캐시에 저장(ETag = "aaaaa")
  • 캐시 시간 초과 후 클라이언트가 재 요청함.
    GET /star.jpg
    If-None-Match: "aaaaa"
  • 서버 측에서 ETag와 클라이언트에서 보낸 내용과 같은지 판단함.
  • 서버에서 데이터 변경되지 않은 경우, 304 Not Modified 및 헤더만 보냄(body 없음)
    HTTP/1.1 304 Not Modified
    content-type: image/jpeg
    cache-control: max-age=60
    ETag: "aaaaa"
    Content-Length: 34012

 

 

7. ETag, If-Non-Match  정리


  • 간단하게 ETag를 서버에 보내서 같으면 유지! 다르면 다시 받음!
  • 캐시 제어 로직을 서버에서 완전히 관리할 수 있음
  • 클라이언트는 단순히 ETag값을 서버에 제공
  • 클라이언트는 어떻게 서버에서 판단하는지 로직 모름
Comments