반응형
클라이언트에서 서버에 다시 요청하면 2가지 상황이 나타난다.
다시 요청했더니 서버에서 다른 이미지를 줬을때 (데이터가 바뀐것)
이러면 당연히 데이터를 바꿔서 클라이언트에게 보여줘야한다.
그런데 60초 초과해서 다시 요청했더니 데이터가 똑같다면? 기존이랑 똑같은 이미지를
처음부터 다시 다운받는거면?
용량이 1메가가 되는 처음부터 다시 다운받을 필요가 있을까?
이걸 해결하는게 검증 헤더와 조건부 요청이다.
데이터가 안바뀌었단 사실 검증할 방법 필요
데이터가 마지막에 수정된 최종수정일을 Last-Modified에 넣어둔다.
60초가 지나서 다시 요청 보내기전에 Last-Modified가 있으면
서버에서 수정날짜를 보고 판단한다.
수정이 안됐으면 HTTP 응답을 만들때 304 Not Modified로 응답한다.
Body를 다 빼고 Head 만 전송하면서 네트워크 부하가 확 줄어든다.
이렇게 응답을 웹브라우저가 받으면 캐시가 안바뀌었으니 써도 되는구나 인식하고 캐시를 다시 세팅한다.
그러고 클라이언트는 캐시에 저장된 데이터를 사용한다.
검증헤더와 조건부 요청 정리
검증헤더 : Last-Modified
조건부 : if-modified-since
- 캐시 유효 시간이 초과해도, 서버의 데이터가 갱신되지 않으면
- 304 Not Modified + 헤더 메타 정보만 응답한다. (바디는 빼 버린다 X)
- 클라이언트는 서버가 보낸 응답 헤더 정보로 캐시의 메타 정보를 갱신하고
- 클라이언트는 캐시에 저장되어 있는 데이터 재활용한다.
- 결과적으로 네트워크 다운로드가 발생하지만 용량이 적은 헤더 정보만 다운로드한다.
- 매우 실용적인 해결책이다.
- 웹 브라우저는 이 메커니즘을 다 실행하고 있다.
이렇게 개발자도구로 네트워크 창을 봤을때 배경이 흰색인게 있고 회색인게 있다.
흰색인건 캐시에서 불러온 데이터다.
반응형
'Spring > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
33. 캐시와 조건부 요청 헤더 (0) | 2023.09.03 |
---|---|
32. 검증 헤더와 조건부 요청2 | ETag (0) | 2023.09.03 |
30. 캐시 기본동작 (0) | 2023.09.03 |
29. 쿠키 (0) | 2023.09.03 |
28. 인증 (0) | 2023.09.03 |