본문 바로가기

정보/WEB

HTTP Cache 역할, 종류

Cache의 필요성; 웹 브라우저와 웹 서버의 부하

  • 웹 브라우저가 웹 서버에게 요청하고 반환해야 하는데 매번 이를 반복하려니 부하가 옴
  • 이전과 같은 것을 로드해야 한다면, 이를 재사용 하기 위해 Cache를 사용
  • 첫 요청에 대해서 반환할 때 서버 측에서 캐시와 관련된 헤더를 통해 설정.
  • 저장소 위치 별로 아래와 같이 분류한다. 
    • 이전에 받았던 응답을 브라우저 측에서 재사용 할 때 : HTTP Private Cache 사용
    • 이전에 반환한 응답을 재사용 할 때
      • HTTP Shared Cache (프록시 = CDN 또는 Forward / Reverse Proxy에서 사용)
    • API 서버 자체 / 서버 사이드 Cache 사용
      • Local Cache : 서버측에서 직접적으로 다루는 EH캐시와 같은 캐시 라이브러리를 활용
      • 참고로 서버측에서는 LRU(Least Recently Used) 알고리즘을 통해 오래된 캐시를 제거
      • Global Cache : Memcached나 Redis와 같은 것을 사용
        • 특히 Redis는 Nosql 기반 인메모리 DB로 속도가 매우 빠르다.
더보기

✅ 명사로서의 cache : 임시로 재사용할 내용을 저장하는 기능

    ➡️ CPU 캐시 / HTTP 캐시 / 서버 (로컬 캐시 + 글로벌 캐시) 캐시와 같은 게 있다.

✅ 동사로서의 cache : "임시로 저장해" 라는 의미

 

 

HTTP Cache란 ?

  • HTTP로 통신하는 웹 브라우저와 웹 서버 사이의 임시 중간 저장소
  • 이 HTTP Cache에 재사용하려는 HTTP Resource의 결과를 저장한다.
  • 위에서 설명했듯, 저장하려는 위치에 따라 HTTP Cache는 Private와 Shared로 나뉜다.

Private Cache

  • 웹 브라우저에 저장.
  • 해당 웹 브라우저 한 명을 위해 저장하는 것.
  • 서버측에서 Cache-Control 헤더에서 private으로 설정한 뒤 반환하면 웹브라우저에서 이를 저장 후 사용
  • 서버측에서 public 헤더로 설정하더라도 웹브라우저에서도 이를 cache한다.

Shared Cache

  • 저장 위치에 따라 Proxy Cache와 관리형 Cache로 나뉜다.
    • Proxy Cache
      • 프록시 서버에 저장하는 캐시. 주로 Reverse Proxy에 저장한다. (Forward도 가능은 함)
      • 서버측에서 반환할 때 Cache-Control 헤더에 public 속성을 넣어서 관리함.
    • 관리형 Cache
      • CDN에 저장하는 캐시. 

 

 

만약 HTTPS 라면?

TLS 암복호화를 하는 위치에 따라서 두 가지로 나뉨

  1. TLS Termination(Offloading; 서버의 부담을 덜어 줌) : 프록시가 웹 브라우저와 서버 사이의 암복호화 진행
  2. TLS Pass-through : 웹 서버가 암복호화를 진행