TTL 설정 및 재정의 사용

이 페이지에서는 Cloud CDN에서 TTL 재정의를 사용하는 방법을 설명합니다. TTL 재정의는 Cloud CDN이 콘텐츠 유효성을 다시 검사하기 전에 콘텐츠를 캐시하는 기간을 세밀하게 제어합니다.

시작하기 전에

  • 캐시 모드를 읽어보세요.

  • Cloud CDN이 사용 설정되어 있는지 확인합니다. 자세한 내용은 Cloud CDN 사용을 참조하세요.

  • 필요한 경우 Cloud SDK를 최신 버전으로 업데이트합니다.

    gcloud components update
    

기본 TTL 설정

콘텐츠 유형(FORCE_CACHE_ALL)에 관계없이 모든 정적 콘텐츠(CACHE_ALL_STATIC) 또는 모든 콘텐츠를 캐시하도록 캐시 모드를 설정하면 콘텐츠 캐싱의 기본 TTL(수명) 3,600초(1시간)입니다.

자주 변경되지 않는 콘텐츠의 캐시 적중률을 향상시키려면 기본 TTL을 재정의하여 Cloud CDN이 원본에서 콘텐츠 유효성을 다시 검사하도록 하면 됩니다. 기본 TTL의 최대 허용 값은 31,622,400초(1년)입니다. 자주 액세스되지 않는 객체는 정의된 TTL 이전에 캐시에서 삭제될 수 있습니다.

기본 TTL을 0으로 설정하면 기본 TTL이 적용되는 경우 응답이 원본에서 다시 검증됩니다.

콘텐츠 유형(FORCE_CACHE_ALL)에 관계없이 모든 콘텐츠를 캐시하도록 캐시 모드를 설정하면 기본 TTL은 원본 헤더에서 설정된 TTL이 있는 응답을 포함하여 모든 응답에 설정된 TTL을 덮어씁니다. 이 모드에서는 Cloud CDN이 클라이언트에 제공된 응답의 public 속성과 max-age 속성을 설정하므로 클라이언트에 기본 TTL이 표시됩니다.

CACHE_ALL_STATIC 모드의 경우, 유효한 TTL(max-age, s-max-age 또는 Expires 헤더)이 기존에 없는 응답의 원본에서 제공되는 캐시된 콘텐츠에 기본 TTL이 적용됩니다. CACHE_ALL_STATIC 모드에서는 기본 TTL이 클라이언트에 제공되는 Cache-Control 헤더를 수정하지 않습니다. CACHE_ALL_STATIC 모드에서 Cache-Control 헤더를 수정하려면 클라이언트 TTL을 설정해야 합니다.

캐시 모드가 원본 헤더(USE_ORIGIN_HEADERS)를 사용하도록 설정하면 Cloud CDN에서 max-age 또는 s-max-age 원본 지시문이나 Expires 헤더를 대신 사용하므로 기본 TTL 값은 적용되지 않고 설정될 수 없습니다.

Console

  1. Google Cloud Console에서 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 외부 HTTP(S) 부하 분산기의 이름을 클릭합니다.
  3. 수정 을 클릭합니다.
  4. 백엔드 구성에서 백엔드를 선택하고 수정 을 클릭합니다.
  5. Cloud CDN 사용 설정이 선택되어 있는지 확인합니다.
  6. 캐시 모드가 정적 콘텐츠 캐시(권장) 또는 모든 콘텐츠 강제 캐시인지 확인합니다. 캐시 모드가 Cache-Control 헤더에 기반한 원본 설정 사용인 경우 TTL 값을 재정의하는 것은 지원되지 않습니다.
  7. 기본 TTL에서 값을 선택합니다.
  8. 저장을 클릭합니다.

gcloud

백엔드 서비스의 경우 --default-ttl 플래그와 함께 gcloud compute backend-services create 또는 gcloud compute backend-services update 명령어를 사용합니다.

백엔드 버킷의 경우 --default-ttl 플래그와 함께 gcloud compute backend-buckets create 또는 gcloud compute backend-buckets update 명령어를 사용합니다.

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --default-ttl=DEFAULT_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --default-ttl=DEFAULT_TTL

DEFAULT_TTL을 최대 31,622,400초(1년)로 바꿉니다.

API

백엔드 버킷의 경우 Method: backendBuckets.insert 또는 Method: backendBuckets.update API 호출을 사용합니다.

백엔드 서비스의 경우 Method: backendServices.insert 또는 Method: backendServices.update API 호출을 사용합니다.

다음 API 호출 중 하나를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

JSON 요청 본문에 다음 스니펫을 추가합니다.

"cdnPolicy": {
  "defaultTtl": DEFAULT_TTL
}

DEFAULT_TTL을 최대 31,622,400초(1년)로 바꿉니다.

최대 TTL 설정

최대 TTL은 출처에서 제공하는 캐시된 콘텐츠의 Cloud CDN 내에 허용되는 최대 TTL을 지정합니다.

다음 중 하나가 참인 경우 응답의 TTL은 최대 TTL에 의해 제한됩니다.

  • 응답이 max-age 또는 s-maxage를 최대 TTL 값보다 높게 설정하려고 합니다.
  • 응답의 Expires 헤더가 향후 cdnPolicy.maxTtl 초를 초과합니다.

최대 TTL 설정은 클라이언트에 전송되는 max-age 값을 변경하지 않습니다. 자세한 내용은 최대 클라이언트 TTL 재정의를 참조하세요. 최대 TTL 설정은 Cloud CDN이 콘텐츠를 캐시하려는 기간에만 영향을 미칩니다.

캐시 모드가 모든 정적 콘텐츠(CACHE_ALL_STATIC)를 캐시하도록 설정하면 기본적으로 콘텐츠 캐싱의 최대 TTL은 86,400초(1일)로 설정됩니다. 최대 31,622,400초(1년)까지 허용됩니다. 하지만 자주 액세스되지 않는 객체는 정의된 TTL 이전에 캐시에서 삭제될 수 있습니다.

FORCE_CACHE_ALL을 사용하면 TTL이 항상 기본 TTL으로 설정되며 최대 TTL을 설정할 수 없습니다.

최대 TTL 값은 기본 TTL 값과 같거나 클 수 있습니다.

콘솔

  1. Google Cloud Console에서 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 외부 HTTP(S) 부하 분산기의 이름을 클릭합니다.
  3. 수정 을 클릭합니다.
  4. 백엔드 구성에서 백엔드를 선택하고 수정 을 클릭합니다.
  5. Cloud CDN 사용 설정이 선택되어 있는지 확인합니다.
  6. 캐시 모드가 정적 콘텐츠 캐시(권장)인지 확인합니다.
  7. 최대 TTL에서 값을 선택합니다.
  8. 저장을 클릭합니다.

gcloud

백엔드 서비스의 경우 --max-ttl 플래그와 함께 gcloud compute backend-services create 또는 gcloud compute backend-services update 명령어를 사용합니다.

백엔드 버킷의 경우 --max-ttl 플래그와 함께 gcloud compute backend-buckets create 또는 gcloud compute backend-buckets update 명령어를 사용합니다.

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --max-ttl=MAX_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --max-ttl=MAX_TTL

MAX_TTL을 최대 31,622,400초(1년)로 바꿉니다.

API

백엔드 버킷의 경우 Method: backendBuckets.insert 또는 Method: backendBuckets.update API 호출을 사용합니다.

백엔드 서비스의 경우 Method: backendServices.insert 또는 Method: backendServices.update API 호출을 사용합니다.

다음 API 호출 중 하나를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

JSON 요청 본문에 다음 스니펫을 추가합니다.

"cdnPolicy": {
  "maxTtl": MAX_TTL
}

MAX_TTL을 최대 31,622,400초(1년)로 바꿉니다.

클라이언트 TTL 재정의

모든 캐시 모드에서 Cloud CDN은 Cache-Control 헤더를 클라이언트에 전달합니다.

클라이언트 TTL을 사용하면 브라우저 또는 클라이언트로 전송되는 항목에 최대 TTL을 설정하여 클라이언트에서 출처를 재검증할 필요 없이 Cloud CDN에 대해 콘텐츠를 재검증할 수 있습니다. 이렇게 하면 필요한 경우 Cloud CDN 내에서 콘텐츠가 무효화될 수 있으며 브라우저에서는 클라이언트 TTL이 만료되는 즉시 콘텐츠가 무효화된다는 것을 알 수 있게 됩니다.

FORCE_CACHE_ALL 모드에서 Cloud CDN은 일반적으로 클라이언트에서 프록시 캐싱에 내부적으로 사용하는 동일한 max-age를 클라이언트에 전달합니다. 하지만 클라이언트 TTL이 지정되고 값이 작은 경우 클라이언트 TTL이 대신 max-age 지시문에 있는 클라이언트에 전달됩니다. 마찬가지로 CACHE_ALL_STATIC 모드에서 클라이언트 TTL은 원본 서버에서 지정된 max-age를 고정하는 역할을 하여 브라우저 또는 클라이언트에 전송된 max-age가 구성된 클라이언트 TTL보다 크지 않도록 합니다. max-age를 지정하지 않으면 기본 TTL과 클라이언트 TTL 값보다 작은 값이 브라우저 또는 클라이언트에 전송된 max-age로 사용됩니다.

클라이언트 TTL 값은 최대 TTL보다 클 수 없습니다.

원본 응답에 Expires 헤더가 있는 경우 헤더가 삭제되고 적절한 TTL의 Cache-Control: max-age 지시문으로 바뀝니다.

콘솔

  1. Google Cloud Console에서 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 외부 HTTP(S) 부하 분산기의 이름을 클릭합니다.
  3. 수정 을 클릭합니다.
  4. 백엔드 구성에서 백엔드를 선택하고 수정 을 클릭합니다.
  5. Cloud CDN 사용 설정이 선택되어 있는지 확인합니다.
  6. 캐시 모드가 정적 콘텐츠 캐시(권장) 또는 모든 콘텐츠 강제 캐시인지 확인합니다. 캐시 모드가 Cache-Control 헤더에 기반한 원본 설정 사용인 경우 TTL 값을 재정의하는 것은 지원되지 않습니다.
  7. 클라이언트 TTL에서 86,400초 이하의 값을 선택합니다.
  8. 저장을 클릭합니다.

gcloud

백엔드 서비스의 경우 --client-ttl 플래그와 함께 gcloud compute backend-services create 또는 gcloud compute backend-services update 명령어를 사용합니다.

백엔드 버킷의 경우 --client-ttl 플래그와 함께 gcloud compute backend-buckets create 또는 gcloud compute backend-buckets update 명령어를 사용합니다.

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --client-ttl=CLIENT_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --client-ttl=CLIENT_TTL

CLIENT_TTL을 최대 86,400초(1일)로 바꿉니다.

API

백엔드 버킷의 경우 Method: backendBuckets.insert 또는 Method: backendBuckets.update API 호출을 사용합니다.

백엔드 서비스의 경우 Method: backendServices.insert 또는 Method: backendServices.update API 호출을 사용합니다.

다음 API 호출 중 하나를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

JSON 요청 본문에 다음 스니펫을 추가합니다.

"cdnPolicy": {
  "clientTtl": CLIENT_TTL
}

CLIENT_TTL을 최대 86,400초(1일)로 바꿉니다.