HTTP 웹 기본 지식 - 캐시 기본 동작
캐시 기본 동작
이번시간부터는 캐시와 조건부 요청과 관련된 헤더들과 동작들에 대해서 알아보도록 하겠다.
먼저, 캐시가 어떠헥 동작하는지 캐시 기본 동작에 대해서 알아보자.
캐시가 없다고 가정하자.
웹브라우저에서 GET/ start.jpg를 요청하면,
서버에서 star.jpg가 있으면 응답을 내려준다.
응답 HTTP를 보면, 헤더가 있고, 밑에 실제 이미지와 관련된 바이트코드가 있다고 가정할 때,
start.jpg 이미지가 HTTP 헤더 관련된 용량이 0.1M,
실제 이미지를 표현하는 HTTP 바디 부분이 1M 라고 가정하면,
헤더와 바디를 합쳐 1.1M의 네트웍을 차지하면서 웹브라우저로 내려가고,
그리고나서 웹브라우저에 이미지가 표시될 것이다.
캐시가 없으므로, 똑같은 요청을 한번 더하면,
서버에서는 또 똑같이 요청을 받아서 응답을 내려주는데,
헤더와 바디부를 다시 만들어서 1.1M의 용량을 내려준다.
그렇게해서 웹브라우저에서 다시 사진을 볼 수 있을 것이다.
캐시가 없으면,
- 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다.
- 인터넷 네트워크는 매우 느리고 비싸다.
- 브라우저 로딩 속도가 느리다.
- 느린 사용자 경험
이러한 문제가 있다.
그래서 캐시를 적용해서 해결 하는 것이다.
캐시를 적용하면, 어떻게 되냐면,
웹 브라우저에서 GET /start.jpg라고 요청하면,
서버에서는 캐시를 적용하는데,
cache-control 이라는 것을 HTTP 헤더에 넣어줄 수 있다.
이것은 무슨 뜻이냐면, 캐시가 유효한 시간(초)이다.
cache-control: max-age=60 은, 응답이 내려가면서 60초 동안은 해당 캐시가 유효하다는 뜻이다.
그렇게 되면, 최초로 요청할 때는, start.jpg(1.1M)가 내려가는데,
웹 브라우저에는 내부에 캐시를 저장하는 저장소가 있다.
거기에 어떻게 하냐면,
cache-control: max-age=60 이 최대시간이 60초이므로,
60초 유효하다고 가정하고 응답 결과를 캐시에 저장한다.
그러면, 두번째 요청할 때,
우선 캐시를 탐색한다.
그래서 캐시를 봤을때, 60초 유효하고, 아직 60초가 안지낫다면, 이 캐시에서 바로 가져오는 것이다.네트워크를 탈 필요가 없는 것이다.
캐시를 적용하면,
- 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다.
- 비싼 네트워크 사용량을 줄일 수 있다.
- 브라우저 로딩 속도가 매우 빠르다.
- 빠른 사용자 경험
만약에 GET/ star.jpg 를 요청했는데, 60초가 초과되어,
캐시의 우효시간 60초가 지나서 사용할 수 없게되면,
당연히 다시 요청해야한다.
다시 요청을 하면, 서버에서는 똑같은 응답메시지를 내려준다.
캐시는 60초동안 유효하다고하고, 캐시데이터와 바디에 이미지바이트코드를 내려준다.
이 과정에서 당연히 네트워크는 1.1M를 사용할 것이다.
이렇게 해서 받은 데이터를 가지고,
기존 데이터를 덮어씌워서 새로운 캐시로 초기화 된다. 그러면서 다시 60초 유효한 상태로 된다.
캐시 시간이 초과되면,
- 캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고, 캐시를 갱신한다.
- 이때 다시 네트워크 다운로드가 발생한다.
그런데, 방금 상황을 잘 생각해보자.
별 사진이 바뀌었을까? 별 사진은 전혀 바뀌지 않았다.
그런데 전체를 다시 다운로드 받는 것은, 비효율적이다.
만약에 클라이언트 캐시가 만료가 되었어도,
클라이언트가 가진데이터와 서버가 가진 데이터가 똑같다면,
1.1M의 데이터를 다시 다운로드 해야할 이유가 있을까? 너무 비효율적이다.
이것을 해결할 수 있는 매커니즘을 다음시간에 알아보도록 하겠다.
'HTTP' 카테고리의 다른 글
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청2 (0) | 2022.06.22 |
---|---|
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청1 (0) | 2022.06.22 |
HTTP 웹 기본 지식 - 인증 (0) | 2022.06.21 |
HTTP 웹 기본 지식 - 특별한 정보 (0) | 2022.06.20 |
HTTP 웹 기본 지식 - 일반 정보 (0) | 2022.06.20 |
댓글
이 글 공유하기
다른 글
-
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청2
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청2
2022.06.22 -
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청1
HTTP 웹 기본 지식 - 검증 헤더와 조건부 요청1
2022.06.22 -
HTTP 웹 기본 지식 - 인증
HTTP 웹 기본 지식 - 인증
2022.06.21 -
HTTP 웹 기본 지식 - 특별한 정보
HTTP 웹 기본 지식 - 특별한 정보
2022.06.20