쿠키 기반의 콘텐츠 캐싱 - 아마존 CloudFront

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

쿠키 기반의 콘텐츠 캐싱

기본적으로 요청 및 응답을 처리하거나 엣지 로케이션에 객체를 캐싱할 때는 쿠키를 고려하지 CloudFront 않습니다. Cookie헤더에 있는 내용을 제외하고 동일한 요청을 두 개 CloudFront 받으면 기본적으로 요청을 동일한 것으로 CloudFront 취급하고 두 요청에 대해 동일한 객체를 반환합니다.

최종 사용자 요청의 쿠키 일부 또는 전체를 오리진에 전달하고 전달한 쿠키 값을 기반으로 개별 버전의 객체를 CloudFront 캐시하도록 구성할 수 있습니다. 이렇게 하면 최종 사용자 요청 (전달하도록 구성된 요청) 에서 일부 또는 모든 쿠키를 CloudFront 사용하여 캐시에 있는 객체를 고유하게 식별합니다.

예를 들어, locations.html에 대한 요청에 country 또는 uk 값을 가진 fr 쿠키가 포함되어 있다고 가정합니다. country쿠키 값을 기반으로 객체를 CloudFront 캐싱하도록 구성하면 는 요청을 오리진에 CloudFront 전달하고 쿠키와 해당 값을 포함합니다locations.html. country 오리진은 반환되고locations.html, country 쿠키의 값이 들어 있는 요청에 대해 한 번, 값이 들어 있는 요청에 대해 한 번 객체를 CloudFront 캐싱합니다. uk fr

중요

Amazon S3 및 일부 HTTP 서버에서는 쿠키를 처리하지 않습니다. 쿠키를 처리하지 않거나 쿠키에 따라 응답이 달라지지 않는 오리진에 쿠키를 CloudFront 전달하도록 구성하지 마세요. 그러면 동일한 객체에 대해 오리진에 더 많은 요청을 전달하게 되어 성능이 저하되고 오리진의 부하가 증가할 수 있습니다. CloudFront 이전 예제를 고려할 때 오리진이 쿠키를 처리하지 않거나 country 쿠키 값에 CloudFront 관계없이 항상 동일한 버전의 to를 locations.html 반환하는 경우 해당 country 쿠키를 CloudFront 전달하도록 구성하지 마십시오.

반대로, 사용자 지정 오리진이 특정 쿠키에 의존하거나 쿠키에 따라 다른 응답을 보내는 경우에는 해당 쿠키를 오리진에 CloudFront 전달하도록 구성해야 합니다. 그렇지 않으면 요청을 오리진에 전달하기 전에 쿠키를 CloudFront 제거하세요.

쿠키 전달을 구성하려면 배포의 캐시 동작을 업데이트합니다. 캐시 동작에 대한 자세한 내용은 캐시 동작 설정(특히 쿠키 전달허용 목록 쿠키 단원)를 참조하십시오.

다음 중 하나를 수행하도록 각 캐시 동작을 구성할 수 있습니다.

  • 모든 쿠키를 오리진에 전달 - 뷰어가 요청을 오리진에 전달할 때 보낸 모든 쿠키를 CloudFront 포함합니다. 오리진이 응답을 반환하면 뷰어 CloudFront 요청의 쿠키 이름과 값을 사용하여 응답을 캐싱합니다. 원본 응답에 Set-Cookie 헤더가 포함된 경우 요청된 객체와 함께 헤더를 뷰어에 CloudFront 반환합니다. CloudFront 또한 오리진에서 반환된 객체로 Set-Cookie 헤더를 캐시하고 모든 캐시 히트의 뷰어에게 해당 Set-Cookie 헤더를 보냅니다.

  • 지정한 쿠키 세트 전달 - 요청을 오리진에 전달하기 전에 최종 사용자가 보낸 쿠키 중 허용 목록에 없는 모든 쿠키를 CloudFront 제거합니다. CloudFront 최종 사용자 요청에 나열된 쿠키 이름과 값을 사용하여 응답을 캐시합니다. 원본 응답에 Set-Cookie 헤더가 포함된 경우 요청된 객체와 함께 헤더를 뷰어에게 CloudFront 반환합니다. CloudFront 또한 오리진에서 반환된 객체로 Set-Cookie 헤더를 캐시하고 모든 캐시 히트의 뷰어에게 해당 Set-Cookie 헤더를 보냅니다.

    쿠키 이름에 와일드카드를 지정하는 방법에 대한 자세한 내용은 허용 목록 쿠키 단원을 참조하십시오.

    각 캐시 동작에 대해 전달할 수 있는 쿠키 이름 수에 대한 현재 할당량을 확인하거나 더 높은 할당량을 요청하려면 쿼리 문자열에 대한 할당량(레거시 캐시 설정)을 참조하십시오.

  • 오리진에 쿠키를 전달하지 마세요. 뷰어가 전송한 쿠키를 기반으로 객체를 캐시하지 CloudFront 않습니다. 또한 CloudFront는 오리진에 요청을 전달하기 전에 쿠키를 제거하고 최종 사용자에게 응답을 반환하기 전에 응답에서 Set-Cookie 헤더를 제거합니다.

전달하려는 쿠키를 지정할 때는 다음 사항에 유의하십시오.

액세스 로그

요청을 기록하고 쿠키를 CloudFront 기록하도록 구성하면 오리진에 쿠키를 CloudFront 전달하지 않도록 구성하거나 특정 쿠키만 CloudFront 전달하도록 구성한 경우에도 모든 쿠키와 모든 쿠키 속성을 CloudFront 기록합니다. CloudFront 로깅에 대한 자세한 내용은 을 참조하십시오표준 로그(액세스 로그) 구성 및 사용.

대소문자 구분

쿠키 이름과 값은 모두 대소문자를 구분합니다. 예를 들어 모든 쿠키를 전달하도록 구성되어 있고 동일한 객체에 대한 최종 사용자 요청 2개에 대해 대소문자를 제외한 모든 쿠키가 동일한 경우 객체를 두 번 CloudFront 캐싱합니다. CloudFront

CloudFront 쿠키를 정렬합니다.

쿠키 (전체 또는 일부) 를 전달하도록 구성된 경우 CloudFront 요청을 오리진에 전달하기 전에 쿠키 이름을 기준으로 쿠키를 자연스러운 순서로 CloudFront 정렬합니다.

If-Modified-SinceIf-None-Match

If-Modified-Since쿠키 (전체 또는 일부) 를 전달하도록 구성된 경우에는 If-None-Match CloudFront 조건부 요청이 지원되지 않습니다.

표준 이름-값 페어 형식 필요

CloudFront 값이 표준 이름-값 쌍 형식을 준수하는 경우에만 쿠키 헤더를 전달합니다. 예를 들면 다음과 같습니다. "Cookie: cookie1=value1; cookie2=value2"

Set-Cookie 헤더 캐싱 비활성화

쿠키를 오리진에 전달하도록 구성된 경우 CloudFront (모든 쿠키 또는 특정 쿠키 포함) 오리진 응답에서 수신한 Set-Cookie 헤더도 캐시합니다. CloudFront 이러한 Set-Cookie 헤더를 원래 뷰어에 대한 응답에 포함시키고 캐시에서 제공되는 후속 응답에도 포함합니다. CloudFront

오리진에서 쿠키를 수신하고 싶지만 오리진의 CloudFront 응답에 Set-Cookie 헤더를 캐시하고 싶지 않은 경우 필드 Set-Cookie 이름으로 지정하는 no-cache 디렉티브가 포함된 Cache-Control 헤더를 추가하도록 오리진을 구성하세요. 예: Cache-Control: no-cache="Set-Cookie". 자세한 내용은 Hypertext Transfer Protocol(HTTP/1.1): 캐싱 표준의 응답 캐시 제어 지시문을 참조하십시오.

쿠키 이름의 최대 길이

오리진에 특정 쿠키를 CloudFront 전달하도록 구성한 경우 전달하도록 구성한 모든 쿠키 이름의 총 바이트 수는 512에서 CloudFront 전달하려는 쿠키 수를 뺀 값을 초과할 수 없습니다. 예를 들어 오리진에 10개의 쿠키를 CloudFront 전달하도록 구성한 경우 10개 쿠키의 이름을 합친 길이는 502바이트 (512~10) 를 초과할 수 없습니다.

모든 쿠키를 오리진에 CloudFront 전달하도록 구성한 경우 쿠키 이름의 길이는 중요하지 않습니다.

CloudFront 콘솔을 사용하여 배포를 업데이트하여 쿠키를 오리진에 CloudFront 전달하는 방법에 대한 자세한 내용은 을 참조하십시오배포 업데이트. CloudFront API를 사용하여 배포를 업데이트하는 방법에 대한 자세한 내용은 Amazon CloudFront API 참조를 참조하십시오 UpdateDistribution.