Http Response 304
Respone 304
본론으로 시작하면 Response code 304
는 Not Modified
이다
<img src="https://static.podo-dev.com/blogs/images/2019/10/01/origin/7b62c384-9490-4335-9b1f-3d089e5af706.PNG" style="width:720px;">
누군가는 이 응답 코드를 에러로 생각할 수도 있지만?
304
는 브라우저와의 약속
이다.
브라우저는 캐싱을 한다.
브라우져는 최초 페이지 방문시 리소스를 받아 캐싱하고,
똑같은 페이지를 재방문 했을때,
가지고 있는 리소스가 있기에 다시 리소스를 받아오지 않는다.
<br>
304로 약속한다.
<img src="https://static.podo-dev.com/blogs/images/2019/10/01/origin/976d2f56-5e32-4ea2-b972-9fcb794feb8a.PNG" style="width:720px;">
<img src="https://static.podo-dev.com/blogs/images/2019/10/01/origin/28746178-d9cd-4930-be05-c44c71c9f77c.PNG" style="width:269px;">
본 게시글을 최초로 읽었다면,
다음과 같이 이미지 리소스를 요청하고, 응답코드 200
을 받을 수있다.
<br>
<br>
그리고 새로고침을 누르면..
<img src="https://static.podo-dev.com/blogs/images/2019/10/01/origin/e7caa9c6-96a6-4fe9-9780-7deae0dd589e.PNG" style="width:720px;">
<img src="https://static.podo-dev.com/blogs/images/2019/10/01/origin/2afc9ee9-f353-40bb-a010-e1863c57b0c0.PNG" style="width:499px;">
304
응답 코드를 확인 할 수있다.
그리고 고작 138Byte
의 용량으로 응답한다.
<br/>
<br/>
304는 다음을 말한다
304 Not Modified
의 의미는 다음과 같다
'너가 이미 가지고 있는거 아직 수정 안된거야, 그냥 그거써!'
즉 브라우저는 304
로 응답이 오면, 캐싱된 리소스를 사용한다
그럼 서버는 브라우져가 가지고 있는 데이터가
리소스가 수정 되지 않은 데이터인지 어떻게 알까?
<img src="https://static.podo-dev.com/blogs/images/2019/10/01/origin/2849b630-e2e6-4b37-8bd9-16fc5200b42e.PNG" style="width:669px;">
요청의 Request Header를 보면 if-modified-since
라는 헤더가 있다.
브라우저는 해당 Header를 이용해서,
'이 시간 이후로 바뀌었니?' 라고 물음을 보내는 것이다.
서버는 해당 Header를 확인하고,
수정사항이 있으면 200
('응 바뀌었어, 다시 가져가)' 을,
없으면 304
'('니꺼 써도되!') 로 응답한다.
<br>
!!!
그렇다면 서버에서는
해당 Header를 확인하여 적절하게 응답하는 로직이 구현되어야 할 것이다.
하지만 당황할 필요 없다. :)
<br/>
Apache, Nginx를 사용한다면, 자동으로 응답하여주니
별도의 구현은 필요로 하지않는다!