웹 기술 기초
브라우저가 이전에 받은 이미지를, 그때의 응답에 붙어 있던 ETag 값을 If-None-Match 헤더에 넣어 다시 요청했다. 서버의 이미지가 바뀌지 않았을 때 서버의 응답으로 올바른 것은?
- A200 OK를 돌려주고, 이전에 보냈을 때와 같은 내용이라도 이미지 본문을 다시 전부 보낸다
- B304 Not Modified를 돌려주고 본문은 보내지 않으며, 브라우저는 저장해 둔 이미지를 사용한다
- C404 Not Found를 돌려주어, 브라우저에 저장된 오래된 이미지를 지우고 다시 가져오게 한다
정답과 해설 보기
정답: B. 304 Not Modified를 돌려주고 본문은 보내지 않으며, 브라우저는 저장해 둔 이미지를 사용한다
ETag는 리소스의 특정 버전을 나타내는 식별자입니다. 브라우저는 ETag를 If-None-Match에 넣어 '이 버전에서 바뀌었으면 보내 달라'는 조건부 요청을 보내고, 바뀌지 않았으면 서버는 본문이 없는 304 Not Modified를 돌려줍니다. 이렇게 하면 확인을 위한 1왕복만으로 끝나고, 이미지 데이터를 다시 보내지 않아도 됩니다. 바뀌었으면 200 OK로 새로운 본문과 새로운 ETag를 돌려줍니다. Cache-Control의 max-age로 정한 기간 안에는 브라우저가 이 확인조차 하지 않고 저장해 둔 것을 사용합니다.