본문으로 건너뛰기

CacheKey

1 CloudFront Cache Key 개요

  • CloudFront Cache Key는 CloudFront의 캐시에서 객체를 고유하게 식별하는 식별자입니다.
  • 이는 CloudFront가 사용자 요청에 대해 캐시된 콘텐츠를 제공할지, 아니면 원본 서버에서 새로운 콘텐츠를 가져올지를 결정하는 데 사용됩니다.
  • Cache Key는 기본적으로 요청된 객체의 URL로 구성되지만, 추가적인 요소들을 포함하도록 확장할 수 있습니다.

2 CloudFront Cache Key의 중요성

  • Cache Key는 CloudFront의 캐싱 동작을 결정하는 핵심 요소입니다.
  • 적절한 Cache Key 설정은 다음과 같은 이점을 제공합니다:
    • 캐시 적중률 향상: 불필요한 요소를 제외하여 캐시 효율성을 높입니다.
    • 개인화된 콘텐츠 제공: 사용자별 특성에 따라 다른 콘텐츠를 제공할 수 있습니다.
    • 원본 서버 부하 감소: 효율적인 캐싱으로 원본 서버로의 요청을 줄입니다.
    • 콘텐츠 전송 속도 향상: 캐시된 콘텐츠를 빠르게 제공합니다.

3 CloudFront Cache Key의 구성 요소

CloudFront Cache Key는 다음과 같은 요소들로 구성될 수 있습니다:

3.1 기본 구성 요소

  • URL: 요청된 객체의 기본 식별자입니다.
  • 호스트 이름: 요청의 대상이 되는 도메인 이름입니다.

3.2 선택적 구성 요소

  • HTTP 헤더: 특정 HTTP 헤더 값을 Cache Key에 포함할 수 있습니다.
  • 쿠키: 사용자 세션 정보나 기타 설정을 포함할 수 있습니다.
  • 쿼리 문자열: URL에 추가된 파라미터 값을 포함할 수 있습니다.

4 CloudFront Cache Policy

  • 개념: 캐시 정책은 CloudFront가 캐시 키에 포함할 HTTP 헤더, 쿠키, 쿼리 문자열을 결정합니다.
  • 목적: 캐시 동작을 최적화하고 개인화된 콘텐츠를 제공합니다.

4.1 Cache Policy의 주요 설정

  • HTTP 헤더 설정:
    • 모든 헤더를 원본으로 전달: 캐싱 없이 모든 요청이 원본 서버로 전달됩니다. TTL은 0으로 설정해야 합니다.
    • 헤더 화이트리스트 전달: 지정된 헤더만 Cache Key에 포함되고 원본 서버로 전달됩니다.
  • 기본 헤더만 전달: 가장 우수한 캐싱 성능을 제공합니다.
  • 쿠키 설정:
    • 없음, 화이트리스트, 제외를 포함한 모든 쿠키, 모두 포함 중 선택 가능합니다.
  • 쿼리 문자열 설정:
    • 없음, 화이트리스트, 제외를 포함한 모든 쿼리 문자열, 모두 포함 중 선택 가능합니다.

4.2 TTL(Time-to-Live) 설정

  • TTL은 객체가 캐시에 유지되는 시간을 정의합니다.
  • 최소 0초부터 최대 1년까지 설정 가능합니다.
  • 원본 서버의 Cache-Control 또는 Expires 헤더를 통해 TTL을 제어할 수 있습니다.

5 원본 요청 정책(Origin Request Policy)

  • 개념: 원본 요청 정책은 CloudFront가 원본 서버로 보내는 요청에 포함할 정보를 결정합니다.
  • 목적: 캐시 키에 영향을 주지 않으면서 원본 서버에 필요한 정보를 전달합니다.

5.1 원본 요청 정책의 주요 구성 요소

  • HTTP 헤더 설정:
    • 없음: 기본 헤더 외에 어떤 HTTP 헤더도 원본으로 전달하지 않습니다.
    • 화이트리스트: 지정된 HTTP 헤더만 원본으로 전달합니다.
    • 모든 뷰어 헤더: 클라이언트가 보낸 모든 HTTP 헤더를 원본으로 전달합니다.
  • 쿠키 설정:
    • 없음, 화이트리스트, 모든 쿠키 중 선택 가능합니다.
  • 쿼리 문자열 설정:
    • 없음, 화이트리스트, 모든 쿼리 문자열 중 선택 가능합니다.

5.2 추가 기능

  • CloudFront에서 생성된 HTTP 헤더나 사용자 정의 헤더를 원본 요청에 추가할 수 있습니다.
  • 이를 통해 원본 서버에 추가적인 정보를 제공할 수 있습니다.

6 Cache Policy와 원본 요청 정책의 차이점

6.1 Cache Policy

  • 목적: 캐시 동작 최적화 및 개인화된 콘텐츠 제공
  • 영향: Cache Key 구성 및 TTL 설정
  • 결과: 캐시 적중률 향상 및 콘텐츠 전송 속도 개선

6.2 원본 요청 정책

  • 목적: 원본 서버로의 요청 관리 및 추가 정보 전달
  • 영향: 원본 서버로 전송되는 데이터 제어
  • 결과: 원본 서버와의 효율적인 통신 및 필요한 정보 전달

7 Cache Key 최적화 전략

  • 불필요한 요소 제외: 캐시 변형을 줄이기 위해 꼭 필요한 요소만 Cache Key에 포함시킵니다.
  • 동적 콘텐츠 처리: 자주 변경되는 동적 콘텐츠의 경우, 관련 요소를 Cache Key에 포함시켜 개인화된 응답을 제공합니다.
  • 지역별 콘텐츠 최적화: 사용자의 지역에 따라 다른 콘텐츠를 제공해야 하는 경우, 관련 헤더를 Cache Key에 포함시킵니다.
  • 디바이스별 최적화: 모바일과 데스크톱 버전이 다른 경우, User-Agent 헤더를 Cache Key에 포함시킬 수 있습니다.
  • 언어별 콘텐츠: 다국어 지원 웹사이트의 경우, Accept-Language 헤더를 Cache Key에 포함시킬 수 있습니다.

8 결론

  • CloudFront Cache Key는 효율적인 콘텐츠 전송과 개인화된 사용자 경험을 제공하는 핵심 요소입니다.
  • Cache Policy와 원본 요청 정책을 적절히 구성함으로써 캐시 효율성을 최적화하고 원본 서버 부하를 줄일 수 있습니다.
  • 각 애플리케이션의 특성과 요구사항에 맞는 Cache Key 전략을 수립하는 것이 중요합니다.
  • 지속적인 모니터링과 최적화를 통해 CloudFront의 성능을 극대화하고 사용자 경험을 개선할 수 있습니다.