Web Caches

eunsukim·2024년 10월 9일

Web Caches의 목적

클라이언트의 요청을 Origin server 까지 접속하지 않고 Web cache에서 처리.

브라우저는 Web cache에 모든 HTTP 요청들을 전송한다.

  • 만약 요청 object가 Web cache에 존재하면, Web cache에서 응답한다.
  • 만약 요청 object가 Web cache에 존재하지 않는다면, Web cache는 이를 origin server에 요청하여 받고, 이를 클라이언트에게 돌려준다.

웹캐시는 클라이언트와 서버의 역할을 동시에 수행한다.

  • 클라이언트에게는 서버의 역할을 수행한다.
  • 원본 서버에게는 클라이언트의 역할을 수행한다.

Why Web caching?

  • 클라이언트 요청 응답 시간 감소
  • 기관 access link의 트래픽 감소
  • 인터넷은 캐시가 촘촘히 분포되어 있어, '열악한' 콘텐츠 제공자들이 더 효과적으로 콘텐츠를 전달할 수 있게 한다.

Caching Example

시나리오:

  • access link rate: 1.54Mbps
  • RTT from institutional router to server: 2 sec
  • Web object size: 100K bits
  • average request rate from browsers to origin servers: 15/sec
  • average data rate to browsers: 1.50Mbps (15/sec * 100k bits)

Performance:

  • access link utilization: 0.97 (1.50Mbps / 1.54Mbps)

    • utilization이 1에 가까울수록 지연시간은 무한대에 가까워진다.
  • Lan utilization = 0.0015

  • end-end delay = Internet delay + access link delay + Lan delay = 2 sec + minutes + μsecs

시나리오:

  • access link rate: 1.54Mbps -> 154Mbps
  • RTT from institutional router to server: 2 sec
  • Web object size: 100K bits
  • average request rate from browsers to origin servers: 15/sec
  • average data rate to browsers: 1.50Mbps (15/sec * 100k bits)

Performance:

  • access link utilization = 0.97 -> 0.0097
  • Lan utilization = 0.0015
  • end-end delay = Internet delay + access link delay + Lan delay = 2 sec + msecs + μsecs

cost:

  • access link 구매 비용

Option 2: install a web cache

시나리오:

  • access link rate: 1.54Mbps
  • RTT from institutional router to server: 2 sec
  • Web object size: 100K bits
  • average request rate from browsers to origin servers: 15/sec
  • average data rate to browsers: 1.50Mbps (15/sec * 100k bits)

Performance:
cache hit rate를 0.4 로 가정.

  • 40%의 요청은 낮은 delay(msecs)로 local web cache에서 처리.
  • 60%의 요청은 이전과 같이 처리.
    • 0.6 * 1.50Mbps = 0.9Mbps
    • access link utilization = 0.9 / 1.54 = 0.58 -> 낮은 delay(msecs)
  • average end-end delay:
    = 0.6 (delay from origin servers) + 0.4 (delay when cache hit)
    = 0.6 * (2.01) + 0.4(~msecs) = ~1.2secs

154Mbps의 접속 링크를 설치하는 것보다 average end-end delay가 낮고, 비용적으로 저렴하다.

Conditional GET

캐시 내부에 있는 오브젝트가 최신 상태면 오브젝트를 보내지 말 것.
클라이언트는 오브젝트가 캐싱된 날짜를 HTTP request 메시지에 넣어 보낸다.
If-modified-since: <날짜> (transmission 딜레이 또는 네트워크 자원 소모 없음)

  • 오브젝트가 최신 상태일 경우(변경되지 않은 경우): 304 Not Modified
    • 클라이언트는 캐싱된 오브젝트를 그대로 사용한다.
  • 오브젝트가 최신 상태가 아닌 경우(변경된 경우): 200 OK + obj
    • 클라이언트는 최신 오브젝트를 서버로 부터 전송받고, 기존 캐시된 오브젝트도 교체한다.

0개의 댓글