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
관리 메뉴

개발자되기 프로젝트

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

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

검증헤더와 조건부 요청 1

Seung__ 2021. 8. 4. 22:22

1. 캐시 유효 시간이 초과한 경우..?


캐시 유효 시간이 초과하여 서버에 재 요청했을 때 서버는 둘 중 한 가지 상황이다.

  • 서버에서 기존 데이터를 변경함
  • 서버에서 기존 데이터를 변경하지 않음.

 

 

2. 서버에서 데이터를 변경하지 않은 경우


  • 캐시 만료 이후에 서버에서 데이터를 변경하지 않음
  • 이 경우에는 캐시를 사용할 수 있을 것 같은데...?
  • 단, 클라이언트의 데이터와 서버의 데이터가 같은지 검증이 필요함.
  • 검증헤더가 필요해

 

 

3. 검증헤더, 조건 부 요청 : Last-Modified, If-modified_since


  • 클라이언트의 요청에 대한 응답으로
  • 서버에서 응답을 줄 때 Last-Modified: 2021년 08월 04일 22:00:00 과 같이 마지막으로 수정된 시각 전달 가능.
  • 응답을 받은 브라우저는 응답 결과를 캐시에 저장하며, 유효 기간 및 최종 수정 일을 같이 저장함.
  • 만약 이 상태에서 캐시 시간 초과된 이후에 재 요청을 한다면..?
  • 서버에서 데이터 변경이 있는 지 확인하기 위해 아래와 같이 요청을 보낸다.
    (캐시에 Last-Modified가 있는 경우)
    GET /star.jpg
    if-modified-since: 2021년 08월 04일 22:00:00
  • 서버는 요청을 받고 해당 데이터의 최종 검증일과 비교&판단함
  • 변경되지 않은 경우에 아래와 같이 서버에서 응답 메시지를 보냄
    HTTP/1.1 304 Not Modified
    Content-Type: image/jpeg
    cache-control: max-age=60
    Last-Modified: 2021년 08월 04일 22:00:00
    Content-Length: 34012
  • 이 때 HTTP Body가 없음!!! 서버측에서는 헤더만 보냄
  • 클라이언트는 응답 결과를 재사용, 헤더 데이터 갱신함.

 

4. 정리


  • 검증 헤더 : Last-Modified
  • 조건 부 요청 : If-modified_since
  • 캐시 유효 시간이 초과해도, 서버의 데이터가 갱신되지 않았으면
  • 서버는 304 Not Modified와 헤더 메타 정보만 보냄, body는 없음
  • 클라이언트는 서버가 보낸 응답 헤더 정보로 캐시의 메타 정보를 갱신
  • 클라이언트는 캐시에 저장되어 있는 데이터 재사용

 

Comments