0Pricing
AWS Solutions Architect · 강의

캐시 동작 및 TTL 설정

경로 기반 캐시 동작을 정의하고 최소, 기본 및 최대 TTL을 설정하며 cache-control 헤더로 캐싱을 세밀하게 조정합니다.

캐시 동작 및 TTL 설정은(는) CoddyKit의 무료 AWS Solutions Architect 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AWS Solutions Architect 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

캐시 동작이란 무엇인가요?

캐시 동작은 다양한 URL 경로 패턴의 요청을 CloudFront가 처리하는 방법을 지정하는 규칙입니다. 각 캐시 동작은 경로 패턴(예: /images/*, /api/*, *.css)을 특정 오리진 및 캐싱 구성에 매핑합니다.

배포에는 하나의 기본 캐시 동작(더 구체적인 동작에 해당하지 않는 모든 경로와 일치)과 최대 25개의 추가 경로 기반 동작이 있습니다. CloudFront는 가장 구체적인 동작부터 가장 덜 구체적인 동작 순서로 평가한 다음 기본 동작으로 넘어갑니다.

경로 패턴 일치

경로 패턴은 와일드카드를 지원합니다. *는 슬래시를 포함한 모든 문자 조합과 일치하고, ?는 임의의 단일 문자와 일치합니다. 예시는 다음과 같습니다.

  • /images/* — /images/로 시작하는 모든 URL
  • *.jpg — 경로 어디에서든 .jpg로 끝나는 모든 요청
  • /api/v2/* — 모든 API v2 라우트
  • /static/??.css — .css 앞에 정확히 두 문자가 있는 정적 CSS 파일

동작은 배포 구성에 나열된 순서대로 평가됩니다. 더 구체적인 패턴을 앞에 배치합니다. 기본 동작(*)은 항상 마지막에 일치합니다.

캐시 정책과 오리진 요청 정책 비교

CloudFront는 캐싱 로직을 두 가지 정책 유형으로 분리합니다.

  • 캐시 정책: CloudFront가 캐시 키로 사용하는 항목을 정의합니다. 즉, 캐시된 객체가 요청과 일치하는지 결정하는 헤더, 쿼리 문자열, 쿠키의 조합입니다. TTL 범위도 설정합니다.
  • 오리진 요청 정책: 캐시 키의 일부가 아니더라도 오리진으로 전달할 헤더, 쿼리 문자열, 쿠키를 정의합니다(토큰마다 캐시를 다르게 만들지 않고 인증 헤더를 오리진으로 보내는 경우).

AWS는 대부분의 사용 사례를 지원하는 관리형 정책(예: CachingOptimized, CachingDisabled)을 제공하며, 사용자 지정 정책을 만들 수도 있습니다.

CloudFront의 TTL 설정

CloudFront는 캐시 정책의 세 가지 TTL 값을 따릅니다.

  • 최소 TTL: 오리진 헤더와 관계없이 CloudFront가 객체를 캐시하는 가장 짧은 시간(기본값 0)
  • 기본 TTL: 오리진이 Cache-Control 또는 Expires 헤더를 보내지 않을 때 CloudFront가 객체를 캐시하는 시간(기본값 86,400초 = 1일)
  • 최대 TTL: CloudFront가 객체를 캐시하는 가장 긴 시간으로, 오리진의 Cache-Control max-age 지시어에 상한을 설정합니다(기본값 31,536,000초 = 1년).

이 세 값은 오리진이 Cache-Control 헤더를 통해 지정하는 실제 캐시 기간의 범위를 결정합니다.

오리진의 Cache-Control 헤더

오리진이 Cache-Control: max-age=3600 헤더를 보내면 CloudFront는 객체를 3,600초 동안 캐시합니다. 단, 이 값이 캐시 정책의 최소 TTL과 최대 TTL 범위 안에 있어야 합니다. 오리진이 Cache-Control: no-cache 또는 Cache-Control: no-store를 보내면 CloudFront는 매번 캐시된 복사본을 제공하기 전에 오리진에 확인합니다.

거의 변경되지 않는 정적 자산에는 긴 max-age(예: 31536000 = 1년)를 설정하고 캐시 무효화를 사용합니다. 파일 이름에 콘텐츠 해시를 포함하면(예: app.a3f4b5.js) 콘텐츠가 변경될 때 URL도 변경되어 이전에 캐시된 버전이 자동으로 무효화됩니다.

# S3 object metadata with long cache TTL
aws s3 cp app.a3f4b5.js s3://my-bucket/ \
  --cache-control 'max-age=31536000, immutable' \
  --content-type 'application/javascript'

정적 동작과 동적 동작 분리

강력한 캐시 동작 패턴은 정적 콘텐츠와 동적 콘텐츠를 분리합니다.

  • /static/*, *.css, *.js, *.jpg → S3 오리진, CachingOptimized 정책(높은 TTL, 캐시 키에 쿠키와 쿼리 문자열 없음)
  • /api/* → ALB 오리진, CachingDisabled 정책(항상 오리진에서 가져오며 모든 헤더와 쿠키 전달)
  • /*(기본값) → ALB 오리진, 중간 수준의 캐싱

이렇게 하면 캐시 가능성이 높은 정적 계층과 동적 API 계층이 분리됩니다. 정적 콘텐츠의 캐시 적중률을 높이는 동시에 API 응답이 항상 최신 상태가 되도록 할 수 있습니다.

캐시 무효화

S3 또는 오리진의 콘텐츠를 업데이트한 후 TTL 만료를 기다리지 않고 CloudFront에서 새 버전을 즉시 제공하려면 캐시 무효화를 생성합니다. 무효화할 경로(예: /images/logo.png 또는 /images/*)를 지정하면 CloudFront가 모든 엣지 캐시에서 해당 객체를 제거합니다.

무효화에는 비용이 발생합니다. 매월 처음 1,000개의 경로는 무료이며, 추가 경로에는 경로별 비용이 부과됩니다. 와일드카드 무효화(예: /*)는 하나의 경로로 계산됩니다. 권장 방법은 비용과 지연을 줄이기 위해 잦은 무효화 대신 정적 자산에 버전이 지정된 파일 이름을 사용하는 것입니다.

# Create a cache invalidation for updated images
aws cloudfront create-invalidation \
  --distribution-id EDFDVBD6EXAMPLE \
  --paths '/images/logo.png' '/css/main.css'

캐시 키 구성 요소

캐시 키는 CloudFront가 캐시된 응답을 조회할 때 사용하는 고유 식별자입니다. 기본적으로 캐시 키는 URL 경로만 포함합니다. 구성 요소를 추가하면 서로 다른 캐시 항목의 수가 증가합니다.

  • 쿼리 문자열: q가 캐시 키에 포함된 경우 /search?q=aws와 /search?q=s3는 별도의 캐시 항목이 됩니다.
  • 헤더: Accept-Encoding을 포함하면 CloudFront가 gzip 버전과 비-gzip 버전을 별도로 캐시할 수 있습니다.
  • 쿠키: 세션 쿠키를 포함하면 사용자별 캐시 항목이 생성되어 사실상 캐싱이 비활성화됩니다.

캐시 효율을 극대화하려면 캐시 키 구성 요소를 최소화합니다. 응답 콘텐츠를 실제로 다르게 만드는 항목만 포함합니다.

엣지에서의 압축

CloudFront는 gzip 또는 Brotli를 사용하여 텍스트 기반 객체(HTML, CSS, JavaScript, JSON)를 뷰어에게 전달하기 전에 자동으로 압축할 수 있습니다. 이렇게 하면 오리진을 변경하지 않고도 페이로드 크기를 60~80% 줄이고 페이지 로드 시간을 개선할 수 있습니다.

압축을 활성화하려면 캐시 정책의 캐시 키에 Accept-Encoding이 포함되어 있는지 확인합니다(CloudFront는 gzip 버전과 비-gzip 버전을 별도로 캐시해야 함). 그런 다음 캐시 동작에서 Compress Objects Automatically를 활성화합니다. CloudFront는 1,000바이트보다 크고 10MB보다 작은 객체를 압축합니다.

캐시 적중률 및 모니터링

캐시 적중률은 오리진에 연결하지 않고 CloudFront 캐시에서 제공된 요청의 비율입니다. 높은 적중률(80% 이상)은 오리진 비용을 낮추고 성능을 향상합니다. CloudFront 콘솔의 Cache Statistics 보고서 또는 CacheHitRate CloudWatch 지표를 통해 모니터링할 수 있습니다.

캐시 적중률을 높이는 방법은 다음과 같습니다. TTL 값을 늘리고, 캐시 키의 헤더와 쿠키 수를 줄이고, 쿼리 문자열 정규화를 사용하고(애플리케이션이 실제로 사용하는 쿼리 문자열만 전달), 오리진에 적절한 Cache-Control 헤더를 설정합니다.

# Get CloudFront metrics for cache hit rate
aws cloudwatch get-metric-statistics \
  --namespace AWS/CloudFront \
  --metric-name CacheHitRate \
  --dimensions Name=DistributionId,Value=EDFDVBD6EXAMPLE \
  --start-time 2026-06-19T00:00:00Z \
  --end-time 2026-06-20T00:00:00Z \
  --period 3600 \
  --statistics Average \
  --region us-east-1

동작별 오리진 및 프로토콜 설정

각 캐시 동작은 서로 다른 오리진을 가리킬 수 있으므로 하나의 CloudFront 배포에서 여러 백엔드의 콘텐츠를 제공할 수 있습니다. 예를 들면 다음과 같습니다.

  • /static/* → S3 오리진(OAC를 통한 비공개 버킷)
  • /api/* → us-east-1의 ALB 오리진
  • /media/* → 비디오 스트리밍용 MediaPackage CDN 오리진

각 동작에서는 뷰어 프로토콜 정책, 허용되는 HTTP 메서드, 함수 연결(CloudFront Functions 또는 Lambda@Edge)도 독립적으로 구성합니다. 따라서 하나의 배포를 유연한 다목적 전송 계층으로 사용할 수 있습니다.

빠른 확인

이 레슨에서 다룬 AWS 솔루션스 아키텍트(SAA-C03) 개념에 대한 이해도를 테스트해 보세요.

레슨 요약

이 레슨에서는 다음을 배웠습니다. 캐시 동작은 URL 경로 패턴을 오리진과 캐싱 규칙에 매핑합니다. 최소/기본/최대 TTL 범위는 콘텐츠가 캐시되는 시간을 제어하며, 오리진의 Cache-Control 헤더가 있으면 우선 적용됩니다. 또한 캐시 무효화는 모든 엣지 로케이션에서 오래된 콘텐츠를 즉시 삭제합니다. 적중률을 최대화하려면 캐시 키 구성 요소를 최소화해야 합니다. 다음에는 서명된 URL, 서명된 쿠키, 지리적 제한을 살펴봅니다.

자주 묻는 질문

“캐시 동작 및 TTL 설정” 강의는 무료인가요?

네 — “캐시 동작 및 TTL 설정” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AWS Solutions Architect 강의 전체를 잠금 해제할 수 있습니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

“캐시 동작 및 TTL 설정”에서 뭘 배우나요?

경로 기반 캐시 동작을 정의하고 최소, 기본 및 최대 TTL을 설정하며 cache-control 헤더로 캐싱을 세밀하게 조정합니다. 브라우저에서 직접 실행하는 실습 코드로 AWS Solutions Architect을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AWS Solutions Architect을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AWS Solutions Architect은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“캐시 동작 및 TTL 설정” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AWS Solutions Architect 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AWS Solutions Architect 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. CloudFront 배포 및 오리진
  2. 캐시 동작 및 TTL 설정
  3. 서명된 URL, 서명된 쿠키 및 지리적 제한
  4. WAF 및 Lambda@Edge를 사용하는 CloudFront
← AWS Solutions Architect(으)로 돌아가기