Framework & Management

캐시 정리

구일일구 2023. 8. 28. 14:16
반응형

캐싱

자주 사용하는 데이터를 어딘가에 임시로 저장하고, 빠르게 꺼내 쓰기 위해 사용되는 기법

원본 데이터를 가져오는데 시간이 오래 걸릴 때 유용함

정적 리소스(HTML, 이미지, JS, CSS)를 사용할 때마다 다운로드 => 많은 네트워크 비용이 발생

따라서 이와 같은 리소스를 어딘가에 캐싱해두면, 네트워크 비용이 줄어들고 로드 속도가 향상될 것

 

캐싱

데이터를 캐시에 저장하는 행위

캐시에 저장된 데이터에 접근하는 시간 < 원본 데이터에 접근하는 시간 일 경우 많이 사용함

 

HTTP 캐시

데이터 접근을 위해 네트워크를 사용해야하는 웹 환경에서 캐시는 유용하게 사용함

HTTP 캐싱을 활용하면 웹 사이트의 로딩 시간을 개선할 수 있음

이미지, JS, CSS와 같은 파일들은 자주 변하지 않기 때문에 캐시를 사용하는 것이 좋음

자주 변하지 않는 데이터를 매번 새롭게 다운로드 하는 것은 불필요한 네트워크 비용 발생을 야기, 서버에 추가적인 부담

=> 느린 웹페이지 로딩 속도로 직결됨

 

HTTP 캐시 종류

Private Cache

웹 브라우저에 저장되는 캐시

다른 사람이 접근할 수 없음

서버 응답에 Authorization 헤더가 포함되어 있다면 Private Cache에 저장되지 않음

 

Shared Cache

Shared Cache는 웹 브라우저와 서버 사이에서 동작하는 캐시

Proxy Cache와 Managed Cache로 나뉨

 

Proxy Cache

(포워드) 프록시에서 동작하는 캐시

 

Managed Cache

AWS Cloudfront 혹은 Cloudflare와 같은 CDN 서비스, 리버스 프록시에서 동작하는 캐시

서비스들이 관리자 패널에서 직접 캐시에 대한 설정을 관리하거나 리버스 프록시 설정으로 관리할 수 있기 때문에 Managed 라고 불림

 

캐시 유효기간

Cache-Control은 HTTP에서 캐시 메커니즘을 지정하기 위해 사용되는 헤더

많은 디렉티브(directive)가 있지만, max-age 라는 디렉티브를 사용하면 캐시의 최대 수명을 설정할 수 있음

max-age의 단위는 "초"

HTTP/1.1 200 OK
Content-Type : text/html
Cache-Control : max-age=3600
Content-Length : 157

<!DOCTYPE HTML>
<html lang="ko">
<head>
	<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
</html>

웹 브라우저가 특정 리소스에 최초로 요청했을 경우 서버는 Cache-Control 헤더가 포함된 응답을 보냄

위 응답을 받은 웹 브라우저는 응답 결과를 3600초. 즉, 1시간동안 캐시에 저장함

 

이후 웹 브라우저가 같은 리소스에 요청을 보내면, 실제 웹 서버에 요청을 보내는 것이 아니라

캐시에 저장한 사본 데이터를 사용자에게 제공

 

max-age 디렉티브에 명시한 캐시 유효 시간이 지난 이후 동일한 리소스를 요청하면, 그때는 실제로 웹 서버에 리소스를 요청함 => 지정된 캐시 시간을 지나지않아 유효한 경우 신선하다(refresh)라고 표현 / 반대의 경우 신선하지 않다(stale)

 


https://hudi.blog/http-cache/

 

HTTP 캐시 (Cache-Control, 유효성 검증 및 조건부 요청 등)

캐시란? 컴퓨터 공학 전반에서 이야기되는 캐시는 자주 사용되는 데이터를 임시로 복사해두는 임의의 장소를 의미한다. 그리고 데이터를 캐시에 저장하는 행위를 캐싱이라고 한다. 일반적으로

hudi.blog

참고

반응형