article thumbnail image
Published 2022. 4. 26. 22:13

자 앞서 캐시를 쓰면 응답속도가 아주 빨라진다고 하였다.

 

응답속도가 빠른데 이게 어떻게 작동하고 검증은 어떻게하는지 알아보자.

 

브라우저 캐시란


한명의 유저에게 속하는 private 캐시인데 캐시컨트롤에의해서 좌지우지되는녀석이다~

그럼 캐시는 어떻게 적용되는지 자세히 알아보자

 

아래그림보셈


Cache-Control: max-age=60 60초동안 유효한 캐시를 보냈다 60초동안 파일같은거 그냥 캐시로 받아오면된다.


자이제 캐시 만료되면
이 경우에는 다시 서버에 요청 해서 캐시다시 만든다음에  jpg파일같은거 받아오면됀다

 

자그러면 검증은 어떻게하냐!

처음에 이런식으로 헤더에다가 박아서 보내는데 Last-Modifed(마지막으로 수정 된 최종 수정일)라는 녀석을 유의깊게보자

 

어? 최종수정일이 같네? 그럼 수정을 안한거네? 

 

 

그렇게 했을 때, 서버에서는 수정이 안되었다고 인식하고 304 Not Modified라고 나온다. 요청을 했는데 난 변경된게 없어 라는 뜻.
그리고 Last-Modified를 다시 보낸다. 근데 중요한 것이 있는데, HTTP Body가 없다. 왜냐하면 수정된 것이 없기 때문이다. 그래서 응답을 전송할 때는 바디를 빼고 Start 라인이랑 헤더 부분만 응답을 만들어서 보내준다.

그러면 웹브라우저에서 받았을 때, 응답 결과를 재사용하고 헤더 데이터를 갱신한다.
이렇게 캐시를 다시 세팅하고 웹브라우저에서 캐시에서 조회하여 쓴다.

이렇게 되면 전송할 수 있는 용량을 확 줄일 수 있다.

 

자 짤막지식 아래 남긴다 나중에 이게뭐지? 할때 이거 보고 생각해보자



경우에 따라서 캐시를 하면안되는경우가있고
, no-store->민감한정보는 캐시에 저장하면 안될때
매번 캐시를 해야되는경우
 no-cache=max-age는 0->저장은하긴하지만 매번 캐시를 재검증요청하는거임

multi-rivalidate 캐시 조회된후 최초 검증하고 안되면 서버에서 재검증하는거임

pragma->http 1.0 쓸때 사용하는 캐시 컨트롤
복사했습니다!