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에 저장하는 캐시.
- Proxy Cache
만약 HTTPS 라면?
TLS 암복호화를 하는 위치에 따라서 두 가지로 나뉨
- TLS Termination(Offloading; 서버의 부담을 덜어 줌) : 프록시가 웹 브라우저와 서버 사이의 암복호화 진행
- TLS Pass-through : 웹 서버가 암복호화를 진행
'정보 > WEB' 카테고리의 다른 글
Cookie를 보완하는 Storage, Session (0) | 2024.09.10 |
---|---|
Cookie 개요, 브라우저에서 쿠키의 작동 (1) | 2024.09.03 |
Proxy Server (1) | 2024.08.30 |
HTTP Cache 재검증 기준 헤더와 조건부 요청 (0) | 2024.08.29 |
HTTP Cache 동작 원리와 Cache-control 헤더 (1) | 2024.08.28 |