본문 바로가기

HTTP

3월 13일 HTTP 헤더2

캐시와 조건부 요청

 

캐시 기본 동작

1.캐시가 없을때

(request)

Get /star.jpg

 

(response)

HTTP/1.1 200 ok

content-type : image/jpeg

content-length : 34012

 

(star.jpg)

 

//각 할당된 용량 1.1M 가정

http 헤더 : 0.1M

http 바디 : 1.0M

 

(별 이미지)

 

 

이때 캐시가 없는 상태에서 요청하여 1.1m의 응답을 받고

다시 요청하면 캐시가 없기 떄문에 1.1M의 응답을 또 받아 총 2.2M를 사용한다.

-데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야한다.

-인터넷 네트워크는 매우 느리고 비싸다

-느린 사용자 경험

 

2.캐시적용

(request)

Get /star.jpg

 

(response)

HTTP/1.1 200 ok

content-type : image/jpeg

cache-control : max-age=60 //60초 동안 캐시 저장

content-length : 34012

 

총1.1M를 사용

-캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다.

-비싼 네트워크 사용량을 줄일 수 있다.

-브라우저 로딩 속도가 매우 빠르다.

-빠른 사용자 경험

 

3.캐시 시간 초과

(request)

Get /star.jpg

 

(response)

HTTP/1.1 200 ok

content-type : image/jpeg

cache-control:max-age=60

content-length : 34012

 

-캐시 유효 시간이 초과되면 서버를 통해 데이터를 다시 조회하고 캐시를 갱신한다.

-이때 다시 네트워크에 다운로드가 발생한다.

이때 이미지에 변경은 없는데 다시받아야 한다면

즉 서버가 데이터와 시간이 경과 되었어도 클라이언트의 캐시값과 통신한다면

꼭 메모리를 써가며 다시 다운받아야 할까?