공부기록

Web Caching 본문

CS/Network

Web Caching

코타쿠 2021. 10. 17. 12:40

Web Caching

웹 캐시 (proxy server)는 원래 웹 서버 대신에 HTTP 요청을 처리해 줄 수 있는 요소이다.

웹 캐시는 자신의 저장소에 요청 받게될 자원들의 복사본을 저장해 뒀다가 요청이 오면 대신 응답하게 된다.

먼저 다음은 웹 캐시가 중간에 있을 때, http://www.someschool.edu/campus.gif객체에 대한 요청을 처리하는 과정이다.

  1. 브라우저가 웹 캐시와 TCP 통신을 성립하고, 해당 객체에 대한 요청을 보낸다.
  2. 웹 캐시는 자신에게 해당 객체가 있으면 HTTP 응답 메세지와 함께 보내게 된다.
  3. 웹 캐시에 해당 객체가 없다면, 웹 캐시는 본래의 서버에 TCP 연결을 한 뒤 해당 객체에 대한 HTTP 요청 메세지를 보내게 된다. 그렇게 하여 본래의 서버로 부터의 HTTP 응답 메세지를 통해 해당 객체를 받아온다.
  4. 웹 캐시는 객체를 저장하고 클라이언트에게 HTTP 응답 메세지를 통해 객체를 보낸다.

웹 캐시는 두가지 장점이 있다.

  1. 클라이언트에 대한 응답속도가 빨라진다. 이는 클라이언트 - 웹 캐시, 웹 캐시 - 오리진서버 간의 병목 현상이 더욱 클때 극대화 된다.
  2. 오리진 서버의 트래픽을 줄여 웹 어플리케이션의 성능을 높히고 관리 비용을 절감한다.

웹 캐싱은 CDN (Content Distribution Networks) 에서 중요한 역할을 한다.

Conditional GET

캐시서버에 있는 자원이 오래된 버전일 수가 있다. 이를 해결하기 위해 캐시서버는 자원을 갱신해야할 필요가 있다. HTTP는 캐시가 자신의 자원이 최신 버전인지 확인할 수 있는 메커니즘이 있는데 이를 Conditional GET 이라고 한다.

Conditional Get은 다음과 같다.

  1. 요청메세지가 GET 을 쓰고
  2. 요청 메세지에 If-Modified-Since : 헤더라인 있음

그냥 GET을 쓰면 무조건 자원을 받아온다. 하지만 Conditional Get을 쓰면 먼저 오리진 서버에 해당 자원이 낙후되었는지 확인을 하고 낡은 버전이라면 자원을 가져오고 그렇지 않다면 (304 - Not Modified) 그냥 자신의 자원을 보낸다.

'CS > Network' 카테고리의 다른 글

네트워크 총정리  (0) 2021.06.05
REST, REST API  (0) 2021.05.26
웹의 동작원리  (0) 2021.05.26
Application Layer  (0) 2021.05.26
Link Layer  (0) 2021.05.26