캐시 키 제어 - Amazon CloudFront

캐시 키 제어

Amazon CloudFront를 사용하여 CloudFront 엣지 로케이션에서 캐싱되는 객체의 캐시 키를 제어할 수 있습니다. 캐시 키는 캐시에 있는 모든 객체의 고유 식별자이며, 최종 사용자 요청이 캐시 적중으로 나타나는지 여부를 결정합니다. 캐시 적중은 최종 사용자 요청이 이전 요청과 동일한 캐시 키를 생성하고 해당 캐시 키의 객체가 엣지 로케이션 캐시에 있고 유효할 때 발생합니다. 캐시 적중이 있는 경우, 객체가 CloudFront 엣지 로케이션에서 최종 사용자에게 제공되므로 다음과 같은 이점이 있습니다.

  • 오리진 서버의 부하 감소

  • 최종 사용자에 대한 지연 시간 감소

캐시 적중률이 높으면(최종 사용자 요청 비율이 높을수록 캐시 적중이 발생함) 웹 사이트 또는 애플리케이션에서 더 나은 성능을 얻을 수 있습니다. 캐시 적중률을 향상시키는 한 가지 방법은 캐시 키에 필요한 최소 값만 포함시키는 것입니다. 자세한 내용은 캐시 키 이해 단원을 참조하세요.

캐시 키를 제어하려면 CloudFront 캐시 정책을 사용합니다. CloudFront 배포의 하나 이상의 캐시 동작에 캐시 정책을 연결합니다.

캐시 정책 생성

캐시 정책을 사용하면 캐시 키에 포함된 값(URL 쿼리 문자열, HTTP 헤더 및 쿠키)을 제어하여 캐시 적중률을 향상시킬 수 있습니다. AWS Command Line Interface(AWS CLI) 또는 CloudFront API를 사용하여 CloudFront 콘솔에서 캐시 정책을 생성할 수 있습니다.

캐시 정책을 생성한 후 CloudFront 배포의 하나 이상의 캐시 동작에 연결합니다.

Console

캐시 정책을 생성하는 방법(콘솔)

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/cloudfront/v3/home?#/policies의 CloudFront 콘솔에서 [정책(Policies)] 페이지를 엽니다.

  2. Create cache policy(캐시 정책 생성)를 선택합니다.

  3. 이 캐시 정책에 대해 원하는 설정을 선택합니다. 자세한 내용은 캐시 정책 이해 섹션을 참조하세요.

  4. 마친 후에는 Create(생성)를 선택합니다.

캐시 정책을 생성한 후 캐시 동작에 연결할 수 있습니다.

캐시 정책을 기존 배포에 연결하는 방법(콘솔)

  1. https://console.aws.amazon.com/cloudfront/v3/home#/distributions의 CloudFront 콘솔에서 [Distributions(배포)] 페이지를 엽니다.

  2. 업데이트할 배포를 선택한 다음 Behaviors(동작) 탭을 선택합니다.

  3. 업데이트할 캐시 동작을 선택한 다음 Edit(편집)를 선택합니다.

    또는 새 캐시 동작을 생성하려면 Create Behavior(동작 생성)를 선택합니다.

  4. Cache key and origin request(캐시 키 및 오리진 요청) 섹션에서 Cache policy and origin request policy(캐시 정책 및 오리진 요청 정책)가 선택되어 있는지 확인합니다.

  5. Cache Policy(캐시 정책)의 경우 이 캐시 동작에 연결할 캐시 정책을 선택합니다.

  6. 페이지 하단에서 Save changes(변경 사항 저장)를 선택합니다.

캐시 정책을 새 배포에 연결하는 방법(콘솔)

  1. 에서 CloudFront 콘솔을 엽니다https://console.aws.amazon.com/cloudfront/v3/home

  2. Create Distribution(배포 생성)을 선택합니다.

  3. Cache key and origin request(캐시 키 및 오리진 요청) 섹션에서 Cache policy and origin request policy(캐시 정책 및 오리진 요청 정책)가 선택되어 있는지 확인합니다.

  4. Cache Policy(캐시 정책)의 경우 이 배포의 기본 캐시 동작에 연결할 캐시 정책을 선택합니다.

  5. 오리진, 기본 캐시 동작 및 기타 배포 설정에 대해 원하는 설정을 선택합니다. 자세한 내용은 배포를 만들거나 업데이트할 때 지정하는 값 섹션을 참조하세요.

  6. 완료되면 Create Distribution(배포 생성)을 선택합니다.

CLI

AWS Command Line Interface(AWS CLI)를 사용하여 캐시 정책을 생성하려면 aws cloudfront create-cache-policy 명령을 사용합니다. 각 개별 파라미터를 명령줄 입력으로 지정하는 대신 입력 파일을 사용하여 명령의 입력 파라미터를 제공할 수 있습니다.

캐시 정책을 생성하는 방법(입력 파일이 있는 CLI)

  1. 다음 명령을 사용하여 cache-policy.yaml 명령에 대한 모든 입력 파라미터가 포함된 create-cache-policy이라는 파일을 만듭니다.

    aws cloudfront create-cache-policy --generate-cli-skeleton yaml-input > cache-policy.yaml
    참고

    yaml-input 옵션은 AWS CLI 버전 2에서만 사용할 수 있습니다. AWS CLI 버전 1에서는 JSON 형식의 입력 파일을 생성할 수 있습니다. 자세한 내용은 AWS Command Line Interface 사용 설명서의 JSON 또는 YAML 입력 파일에서 AWS CLI 스켈레톤 및 입력 파라미터 생성을 참조하세요.

  2. 방금 생성한 cache-policy.yaml이라는 파일을 엽니다. 파일을 편집하여 원하는 캐시 정책 설정을 지정한 다음 파일을 저장합니다. 파일에서 선택적 필드를 제거할 수 있지만 필수 필드는 제거하지 마세요.

    캐시 정책 설정에 대한 자세한 내용은 캐시 정책 이해 단원을 참조하세요.

  3. 다음 명령을 사용하여 cache-policy.yaml 파일의 입력 파라미터로 캐시 정책을 만듭니다.

    aws cloudfront create-cache-policy --cli-input-yaml file://cache-policy.yaml

    명령의 출력에 있는 Id 값을 기록해 둡니다. 캐시 정책 ID인 이 값은 캐시 정책을 CloudFront 배포의 캐시 동작에 연결하는 데 필요합니다.

캐시 정책을 기존 배포에 연결하는 방법(입력 파일이 있는 CLI)

  1. 다음 명령을 사용하여 업데이트할 CloudFront 배포에 대한 배포 구성을 저장합니다. distribution_ID를 배포 ID로 바꿉니다.

    aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
    참고

    --output yaml 옵션은 AWS CLI 버전 2에서만 사용할 수 있습니다. AWS CLI 버전 1을 사용하면 출력을 JSON 형식으로 생성할 수 있습니다. 자세한 내용은 AWS Command Line Interface 설명서AWS CLI의 명령 출력 제어를 참조하세요.

  2. 방금 생성한 dist-config.yaml이라는 파일을 엽니다. 캐시 정책을 사용하도록 업데이트하려는 각 캐시 동작을 다음과 같이 변경하여 파일을 편집합니다.

    • 캐시 동작에서 CachePolicyId이라는 필드를 추가합니다. 필드 값에는 정책을 만든 후 기록한 캐시 정책 ID를 사용합니다.

    • 캐시 동작에서 MinTTL, MaxTTL, DefaultTTLForwardedValues 필드를 제거합니다. 이러한 설정은 캐시 정책에 지정되므로 이러한 필드와 캐시 정책을 동일한 캐시 동작에 포함할 수 없습니다.

    • ETag 필드의 이름을 IfMatch로 바꾸지만 필드 값은 변경하지 마세요.

    완료되면 파일을 저장합니다.

  3. 캐시 정책을 사용하도록 배포를 업데이트하려면 다음 명령을 사용합니다. distribution_ID를 배포 ID로 바꿉니다.

    aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml

캐시 정책을 새 배포에 연결하는 방법(입력 파일이 있는 CLI)

  1. 다음 명령을 사용하여 distribution.yaml 명령에 대한 모든 입력 파라미터가 포함된 create-distribution이라는 파일을 만듭니다.

    aws cloudfront create-distribution --generate-cli-skeleton yaml-input > distribution.yaml
    참고

    yaml-input 옵션은 AWS CLI 버전 2에서만 사용할 수 있습니다. AWS CLI 버전 1에서는 JSON 형식의 입력 파일을 생성할 수 있습니다. 자세한 내용은 AWS Command Line Interface 사용 설명서의 JSON 또는 YAML 입력 파일에서 AWS CLI 스켈레톤 및 입력 파라미터 생성을 참조하세요.

  2. 방금 생성한 distribution.yaml이라는 파일을 엽니다. 기본 캐시 동작의 CachePolicyId 필드에 정책을 생성한 후 기록한 캐시 정책 ID를 입력합니다. 파일을 계속 편집하여 원하는 배포 설정을 지정한 다음 완료되면 파일을 저장합니다.

    배포 설정에 대한 자세한 내용은 배포를 만들거나 업데이트할 때 지정하는 값 단원을 참조하세요.

  3. 다음 명령을 사용하여 distribution.yaml 파일의 입력 파라미터로 배포를 만듭니다.

    aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml
API

CloudFront API를 사용하여 캐시 정책을 생성하려면 CreateCachePolicy를 사용합니다. 이 API 호출에서 지정하는 필드에 대한 자세한 내용은 AWS SDK 또는 기타 API 클라이언트에 대한 캐시 정책 이해 및 API 참조 설명서를 참조하세요.

캐시 정책을 생성한 후 다음 API 호출 중 하나를 사용하여 캐시 동작에 연결할 수 있습니다.

이 두 API 호출에 대해 캐시 동작 내의 CachePolicyId 필드에 캐시 정책의 ID를 제공합니다. 이러한 API 호출에서 지정하는 다른 필드에 대한 자세한 내용은 배포를 만들거나 업데이트할 때 지정하는 값와 AWS SDK 또는 기타 API 클라이언트에 대한 API 참조 설명서를 참조하세요.

캐시 정책 이해

캐시 정책을 사용하면 캐시 키에 포함된 값(URL 쿼리 문자열, HTTP 헤더 및 쿠키)을 제어하여 캐시 적중률을 향상시킬 수 있습니다. CloudFront 에서는 캐시 정책에 대해 미리 정의된 캐시 정책(관리형 정책이라고 함)을 제공합니다. 이러한 관리형 정책을 사용하거나 필요에 따라 자체 캐시 정책을 만들 수 있습니다. 관리형 정책에 대한 자세한 내용은 관리형 캐시 정책 사용 단원을 참조하세요.

캐시 정책에는 정책 정보, TTL(Time To Live) 설정캐시 키 설정으로 분류되는 다음 설정이 포함되어 있습니다.

정책 정보

이름

캐시 정책을 식별하는 이름입니다. 콘솔에서 이름을 사용하여 캐시 정책을 캐시 동작에 연결합니다.

설명

캐시 정책에 대한 설명입니다. 이는 선택 사항이지만 캐시 정책의 용도를 식별하는 데 도움이 될 수 있습니다.

TTL(Time To Live) 설정

TTL(Time To Live) 설정은 Cache-ControlExpires HTTP 헤더(오리진 응답에 있는 경우)와 함께 작동하여 CloudFront 캐시의 객체가 유효한 상태를 유지하는 기간을 결정합니다.

Minimum TTL

객체가 업데이트되었는지 여부를 확인하기 위해 CloudFront에서 오리진을 검사하기 전에 객체를 CloudFront 캐시에 유지할 최소 시간(초)입니다. 자세한 내용은 콘텐츠가 캐시에 유지되는 기간(만료) 관리 단원을 참조하세요.

Maximum TTL

객체가 업데이트되었는지 여부를 확인하기 위해 CloudFront에서 오리진을 검사하기 전에 객체를 CloudFront 캐시에 유지할 최대 시간(초)입니다. CloudFront는 오리진이 객체와 함께 Cache-Control 또는 Expires 헤더를 전송하는 경우에만 이 설정을 사용합니다. 자세한 내용은 콘텐츠가 캐시에 유지되는 기간(만료) 관리 단원을 참조하세요.

기본 TTL

객체가 업데이트되었는지 여부를 확인하기 위해 CloudFront에서 오리진을 검사하기 전에 객체를 CloudFront 캐시에 유지할 기본 시간(초)입니다. CloudFront는 오리진이 객체와 함께 Cache-Control 또는 Expires 헤더를 전송하지 않는 경우에만 이 설정의 값을 객체의 TTL로 사용합니다. 자세한 내용은 콘텐츠가 캐시에 유지되는 기간(만료) 관리 단원을 참조하세요.

캐시 키 설정

캐시 키 설정은 CloudFront에서 캐시 키에 포함하는 최종 사용자 요청의 값을 지정합니다. 이 값에는 URL 쿼리 문자열, HTTP 헤더 및 쿠키가 포함될 수 있습니다. 캐시 키에 포함하는 값은 CloudFront가 오리진으로 보내는 요청(오리진 요청이라고 함)에 자동으로 포함됩니다. 캐시 키에 영향을 주지 않고 오리진 요청을 제어하는 방법에 대한 자세한 내용은 오리진 요청 제어 단원을 참조하세요.

캐시 키 설정은 다음과 같습니다.

헤더

CloudFront에서 캐시 키 및 오리진 요청에 포함하는 최종 사용자 요청의 HTTP 헤더입니다. 헤더의 경우 다음 설정 중 하나를 선택할 수 있습니다.

  • None(없음) – 최종 사용자 요청의 HTTP 헤더가 캐시 키에 포함되어 있지 않고 오리진 요청에 자동으로 포함되지 않습니다.

  • Include the following headers(다음 헤더 포함) – 캐시 키에 포함되고 오리진 요청에 자동으로 포함되는 뷰어 요청의 HTTP 헤더를 지정합니다.

Include the following headers(다음 헤더 포함) 설정을 사용하는 경우 HTTP 헤더를 해당 값이 아닌 이름으로 지정합니다. 예를 들어 다음 HTTP 헤더를 고려해 보세요.

Accept-Language: en-US,en;q=0.5

이 경우 헤더를 Accept-Language: en-US,en;q=0.5로 지정하지 않고 Accept-Language으로 지정합니다. 그러나 CloudFront는 캐시 키 및 오리진 요청에 해당 값을 포함한 전체 헤더를 포함합니다.

CloudFront에서 생성한 특정 헤더를 캐시 키에 포함할 수도 있습니다. 자세한 내용은 CloudFront HTTP 헤더 사용 단원을 참조하세요.

Cookies

CloudFront에서 캐시 키 및 오리진 요청에 포함하는 최종 사용자 요청의 쿠키입니다. 쿠키의 경우 다음 설정 중 하나를 선택할 수 있습니다.

  • None(없음) – 최종 사용자 요청의 쿠키가 캐시 키에 포함되어 있지 않고 오리진 요청에 자동으로 포함되지 않습니다.

  • All(모두) – 최종 사용자 요청의 모든 쿠키가 캐시 키에 포함되고 오리진 요청에 자동으로 포함됩니다.

  • Include specified cookies(지정된 쿠키 포함) – 캐시 키에 포함되고 오리진 요청에 자동으로 포함되는 뷰어 사용자 요청의 쿠키를 지정합니다.

  • Include all cookies except(일부 쿠키 제외) – 캐시 키에 포함되지 않고 오리진 요청에 자동으로 포함되지 않는 뷰어 요청의 쿠키를 지정합니다. 지정한 쿠키를 제외한 다른 모든 쿠키는 캐시 키에 포함되고 오리진 요청에 자동으로 포함됩니다.

Include specified cookies(지정된 쿠키 포함) 또는 Include all cookies except(일부 쿠키 제외) 설정을 사용하는 경우 값이 아닌 이름으로 쿠키를 지정합니다. 예를 들어 다음 Cookie 헤더를 고려해 보세요.

Cookie: session_ID=abcd1234

이 경우 쿠키를 session_ID로 지정하지 않고 session_ID=abcd1234로 지정합니다. 그러나 CloudFront는 캐시 키 및 오리진 요청에 해당 값을 포함한 전체 쿠키를 포함합니다.

쿼리 문자열

CloudFront에서 캐시 키 및 오리진 요청에 포함하는 최종 사용자 요청의 URL 쿼리 문자열입니다. 쿼리 문자열의 경우 다음 설정 중 하나를 선택할 수 있습니다.

  • None(없음) – 최종 사용자 요청의 쿼리 문자열이 캐시 키에 포함되어 있지 않고 오리진 요청에 자동으로 포함되지 않습니다.

  • All(모두) – 최종 사용자 요청의 모든 쿼리 문자열이 캐시 키에 포함되고 오리진 요청에도 자동으로 포함됩니다.

  • Include specified query strings(지정된 쿼리 문자열 포함) – 캐시 키에 포함되고 오리진 요청에 자동으로 포함되는 뷰어 요청의 쿼리 문자열을 지정합니다.

  • Include all query strings except(일부 쿼리 문자열 제외) – 캐시 키에 포함되지 않고 오리진 요청에 자동으로 포함되지 않는 뷰어 요청의 쿼리 문자열을 지정합니다. 지정한 쿼리 문자열을 제외한 다른 모든 쿼리 문자열은 캐시 키에 포함되며 오리진 요청에 자동으로 포함됩니다.

Include specified query strings(지정된 쿼리 문자열 포함) 또는 Include all query strings except(일부 쿼리 문자열 제외) 설정을 사용하는 경우 값이 아닌 이름으로 쿼리 문자열을 지정합니다. 예를 들어 다음 URL 경로를 고려해 보세요.

/content/stories/example-story.html?split-pages=false

이 경우 쿼리 문자열을 split-pages가 아닌 split-pages=false로 지정합니다. 그러나 CloudFront는 캐시 키 및 오리진 요청에 해당 값을 포함한 전체 쿼리 문자열을 포함합니다.

압축 지원

이러한 설정을 사용하면 최종 사용자가 지원할 때 CloudFront에서 Gzip 또는 Brotli 압축 형식으로 압축된 객체를 요청하고 캐시할 수 있습니다. 이 설정을 사용하면 CloudFront 압축이 작동할 수도 있습니다. 최종 사용자는 Accept-Encoding HTTP 헤더를 사용하여 이러한 압축 형식에 대한 지원을 나타냅니다.

참고

Chrome 및 Firefox 웹 브라우저는 HTTPS를 사용하여 요청이 전송될 때만 Brotli 압축을 지원합니다. 이러한 브라우저는 HTTP 요청이 있는 Brotli를 지원하지 않습니다.

다음 중 하나에 해당하는 경우 이러한 설정을 활성화합니다.

  • 오리진에서 최종 사용자가 지원할 때 Gzip 압축 객체를 반환합니다(요청에는 값이 Accept-Encodinggzip HTTP 헤더가 포함되어 있음). 이 경우 Gzip 활성화 설정(CloudFront API, AWS SDK AWS CLI 또는 AWS CloudFormation에서 EnableAcceptEncodingGziptrue로 설정)을 사용합니다.

  • 오리진에서는 최종 사용자가 지원할 때 Brotli 압축 객체를 반환합니다(요청에는 값이 Accept-Encodingbr HTTP 헤더가 포함되어 있음). 이 경우 Brotli 활성화 설정(CloudFront API, AWS SDK AWS CLI 또는 AWS CloudFormation에서 EnableAcceptEncodingBrotlitrue로 설정)을 사용합니다.

  • 이 캐시 정책이 연결된 캐시 동작은 CloudFront 압축을 사용하여 구성됩니다. 이 경우 Gzip이나 Brotli 또는 둘 다에 대해 캐싱을 활성화할 수 있습니다. CloudFront 압축이 활성화된 경우 두 형식 모두에 대해 캐싱을 활성화하면 인터넷으로 내보내는 데이터 송신 비용을 절감할 수 있습니다.

참고

이러한 압축 형식 중 하나 또는 둘 모두에 대해 캐싱을 활성화한 경우 동일한 캐시 동작과 연결된 오리진 요청 정책Accept-Encoding 헤더를 포함하지 마세요. CloudFront는 이러한 형식 중 하나에 대해 캐싱이 활성화된 경우 항상 오리진 요청에 Accept-Encoding 헤더를 포함하므로 이 헤더를 오리진 요청 정책에 포함해도 아무런 효과가 없습니다.

오리진 서버가 Gzip 또는 Brotli 압축 객체를 반환하지 않거나 캐시 동작이 CloudFront 압축으로 구성되지 않은 경우 압축된 객체에 대해 캐싱을 활성화하지 마세요. 이렇게 하면 캐시 적중률이 감소할 수 있습니다.

다음은 이러한 설정이 CloudFront 배포에 미치는 영향을 설명한 것입니다. 다음 시나리오는 모두 최종 사용자 요청에 Accept-Encoding 헤더가 포함되어 있다고 가정합니다. 최종 사용자 요청에 Accept-Encoding 헤더가 포함되지 않은 경우 CloudFront는 이 헤더를 캐시 키에 포함하지 않고 해당 오리진 요청에 포함하지 않습니다.

두 압축 형식에 대해 압축된 객체 캐싱이 활성화된 경우

최종 사용자가 Gzip과 Brotli를 모두 지원하는 경우, 즉 최종 사용자 요청의 gzip 헤더에 brAccept-Encoding 값이 모두 있으면 CloudFront에서는 다음을 수행합니다.

  • 헤더를 Accept-Encoding: br,gzip으로 정규화하고 캐시 키에 정규화된 헤더를 포함합니다. 캐시 키는 최종 사용자가 보낸 Accept-Encoding 헤더에 있던 다른 값을 포함하지 않습니다.

  • 엣지 로케이션에 요청과 일치하고 만료되지 않은 Brotli 또는 Gzip 압축 객체가 있는 경우 엣지 로케이션에서 최종 사용자에게 객체를 반환합니다.

  • 엣지 로케이션의 캐시에 요청과 일치하고 만료되지 않은 Brotli 또는 Gzip 압축 객체가 없는 경우 CloudFront는 정규화된 헤더(Accept-Encoding: br,gzip)를 해당 오리진 요청에 포함합니다. 오리진 요청에는 최종 사용자가 보낸 Accept-Encoding 헤더에 있던 다른 값이 포함되지 않습니다.

최종 사용자가 하나의 압축 형식을 지원하지만 다른 압축 형식은 지원하지 않는 경우(예: gzip이 최종 사용자 요청의 Accept-Encoding 헤더에 있는 값이지만 br은 아닌 경우) CloudFront에서는 다음을 수행합니다.

  • 헤더를 Accept-Encoding: gzip으로 정규화하고 캐시 키에 정규화된 헤더를 포함합니다. 캐시 키는 최종 사용자가 보낸 Accept-Encoding 헤더에 있던 다른 값을 포함하지 않습니다.

  • 엣지 로케이션의 캐시에 요청과 일치하고 만료되지 않은 Gzip 압축 객체가 있는 경우 엣지 로케이션에서 최종 사용자에게 객체를 반환합니다.

  • 엣지 로케이션의 캐시에 요청과 일치하고 만료되지 않은 Gzip 압축 객체가 없는 경우 CloudFront는 해당 오리진 요청에 정규화된 헤더(Accept-Encoding: gzip)를 포함합니다. 오리진 요청에는 최종 사용자가 보낸 Accept-Encoding 헤더에 있던 다른 값이 포함되지 않습니다.

최종 사용자가 Brotli를 지원하지만 Gzip은 지원하지 않는 경우 CloudFront에서 수행할 작업을 이해하려면 앞의 예제에서 두 압축 형식을 서로 바꿉니다.

최종 사용자가 Brotli 또는 Gzip을 지원하지 않는 경우, 즉 최종 사용자 요청의 Accept-Encoding 헤더에 br 또는 gzip 값이 포함되지 않으면 CloudFront에서는 다음을 수행합니다.

  • 캐시 키에 Accept-Encoding 헤더를 포함하지 않습니다.

  • 해당 오리진 요청에 Accept-Encoding: identity를 포함합니다. 오리진 요청에는 최종 사용자가 보낸 Accept-Encoding 헤더에 있던 다른 값이 포함되지 않습니다.

하나의 압축 형식에 대해 압축된 객체 캐싱이 활성화되지만 다른 압축 형식에 대해서는 활성화되지 않는 경우

최종 사용자가 캐싱이 활성화된 형식을 지원하는 경우(예: Gzip에 대해 압축된 객체 캐싱이 활성화되어 있고 최종 사용자가 Gzip을 지원하는 경우 (gzip이 최종 사용자 요청의 Accept-Encoding 헤더에 있는 값 중 하나)) CloudFront에서는 다음을 수행합니다.

  • 헤더를 Accept-Encoding: gzip으로 정규화하고 캐시 키에 정규화된 헤더를 포함합니다.

  • 엣지 로케이션의 캐시에 요청과 일치하고 만료되지 않은 Gzip 압축 객체가 있는 경우 엣지 로케이션에서 최종 사용자에게 객체를 반환합니다.

  • 엣지 로케이션의 캐시에 요청과 일치하고 만료되지 않은 Gzip 압축 객체가 없는 경우 CloudFront는 해당 오리진 요청에 정규화된 헤더(Accept-Encoding: gzip)를 포함합니다. 오리진 요청에는 최종 사용자가 보낸 Accept-Encoding 헤더에 있던 다른 값이 포함되지 않습니다.

이 시나리오에서는 Brotli에 대한 압축 객체 캐싱이 활성화되지 않기 때문에 최종 사용자가 Gzip과 Brotli(최종 사용자 요청의 Accept-Encoding 헤더에는 gzip br 값이 모두 포함됨)를 모두 지원하는 경우와 동일합니다.

압축된 객체 캐싱이 Gzip이 아닌 Brotli에 대해 활성화되어 있는 경우 CloudFront에서 수행할 작업을 이해하려면 앞의 예제에서 두 압축 형식을 서로 바꿉니다.

최종 사용자가 캐싱이 활성화된 압축 형식을 지원하지 않는 경우(최종 사용자 요청의 Accept-Encoding 헤더에 해당 형식에 대한 값이 포함되지 않음) CloudFront에서는 다음을 수행합니다.

  • 캐시 키에 Accept-Encoding 헤더를 포함하지 않습니다.

  • 해당 오리진 요청에 Accept-Encoding: identity를 포함합니다. 오리진 요청에는 최종 사용자가 보낸 Accept-Encoding 헤더에 있던 다른 값이 포함되지 않습니다.

압축 객체 캐싱이 두 압축 형식 모두에 대해 비활성화된 경우

압축 객체 캐싱이 두 압축 형식 모두에 대해 비활성화된 경우 Accept-Encoding 헤더는 CloudFront에서 최종 사용자 요청에 있는 다른 HTTP 헤더와 동일하게 처리됩니다. 기본적으로 캐시 키에 포함되지 않으며 오리진 요청에 포함되지 않습니다. 캐시 정책의 헤더 화이트리스트 또는 다른 HTTP 헤더와 마찬가지로 오리진 요청 정책에 포함할 수 있습니다.