Respone 304

본론으로 시작하면 Response code 304Not Modified 이다

<img src="https://file.podo-dev.com/blogs/images/2019/10/01/origin/7b62c384-9490-4335-9b1f-3d089e5af706.PNG" style="width:720px;">

누군가는 이 응답 코드를 에러로 생각할 수도 있지만?
304브라우저와의 약속 이다.

브라우저는 캐싱을 한다.
브라우져는 최초 페이지 방문시 리소스를 받아 캐싱하고,
똑같은 페이지를 재방문 했을때,
가지고 있는 리소스가 있기에 다시 리소스를 받아오지 않는다.

<br>

304로 약속한다.

<img src="https://file.podo-dev.com/blogs/images/2019/10/01/origin/976d2f56-5e32-4ea2-b972-9fcb794feb8a.PNG" style="width:720px;">

<img src="https://file.podo-dev.com/blogs/images/2019/10/01/origin/28746178-d9cd-4930-be05-c44c71c9f77c.PNG" style="width:269px;">

본 게시글을 최초로 읽었다면,
다음과 같이 이미지 리소스를 요청하고, 응답코드 200을 받을 수있다.

<br>
<br>

그리고 새로고침을 누르면..

<img src="https://file.podo-dev.com/blogs/images/2019/10/01/origin/e7caa9c6-96a6-4fe9-9780-7deae0dd589e.PNG" style="width:720px;">

<img src="https://file.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://file.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를 사용한다면, 자동으로 응답하여주니
별도의 구현은 필요로 하지않는다!

0
이전 댓글 보기
등록
TOP