캐시 모드 사용

이 페이지에서는 Cloud CDN으로 캐시 모드를 사용하는 방법을 설명합니다. 캐시 모드를 사용하면 Cloud CDN에서 콘텐츠를 캐시하는 방법을 구성할 수 있습니다.

시작하기 전에

  • 캐시 모드 및 정적 콘텐츠를 읽어보세요.

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

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

    gcloud components update
    

캐시 모드 설정

Cloud CDN은 응답이 캐시되는 방식, Cloud CDN이 원본에서 전송한 캐시 지시문을 준수하는지 여부, 캐시 TTL이 적용되는 방식을 정의하는 세 가지 캐시 모드를 제공합니다.

사용 가능한 캐시 모드는 다음 표에 나와 있습니다.

캐시 모드 동작
CACHE_ALL_STATIC no-store 또는 private 지시문이 없는 정적 콘텐츠를 자동으로 캐시합니다. 유효한 캐싱 지시문을 설정하는 원본 응답도 캐시됩니다.

이는 gcloud 명령줄 도구 또는 REST API를 사용하여 생성된 Cloud CDN이 사용 설정된 백엔드의 기본 동작입니다.

USE_ORIGIN_HEADERS 유효한 캐시 지시문 및 캐싱 헤더를 설정하기 위해 원본 응답을 요구합니다. 이러한 지시문이 없는 응답은 원본에서 전달됩니다.
FORCE_CACHE_ALL 원본으로 설정된 캐시 지시문을 무효화하고 성공적인 응답을 무조건적으로 캐시합니다. 백엔드가 동적 HTML 또는 API 응답과 같은 사용자별 비공개 콘텐츠를 제공하는 경우에는 이 모드가 적절하지 않습니다.

Cloud CDN이 사용 설정된 백엔드에서 캐시 모드를 구성하려면 다음 안내를 따르세요.

콘솔

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

    부하 분산 페이지로 이동

  2. 외부 HTTP(S) 부하 분산기의 이름을 클릭합니다.
  3. 수정 을 클릭합니다.
  4. 백엔드 구성에서 백엔드를 선택하고 수정 을 클릭합니다.
  5. Cloud CDN 사용 설정이 선택되어 있는지 확인합니다.
  6. 캐시 모드에서 다음 옵션 중 하나를 선택합니다.
    • 정적 콘텐츠 캐시(권장): 정적 콘텐츠는 사용자에 따라 변경되지 않는 웹 애셋입니다. 정적 콘텐츠는 응답의 Content-Type을 기반으로 합니다. 자세한 내용은 정적 콘텐츠를 참조하세요.
    • Cache-Control 헤더를 기준으로 원본 설정 사용: 응답 헤더에 유효한 캐시 지시문이 있는 응답을 캐시합니다.
    • 모든 콘텐츠 강제 캐시: private 또는 no-store 지시문을 무시하고 원본이 제공한 모든 성공적인 콘텐츠를 캐시합니다.
  7. 저장을 클릭합니다.

gcloud

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

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

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --cache-mode=CACHE_MODE
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --cache-mode=CACHE_MODE

CACHE_MODE를 다음 중 하나로 바꿉니다.

  • CACHE_ALL_STATIC(기본값): 정적 콘텐츠를 자동으로 캐시합니다. 캐시할 수 없다고 표시된 응답(Cache-Control 응답 헤더의 private 또는 no-store 지시문)은 캐시되지 않습니다. 동적 콘텐츠를 캐시하려면 콘텐츠에 유효한 캐싱 헤더가 있어야 합니다.

  • USE_ORIGIN_HEADERS: 원본에서 콘텐츠를 캐시하도록 유효한 캐싱 헤더를 설정해야 합니다. 이 헤더가 없는 응답은 Google 에지에서 캐시되지 않으며 요청마다 원본으로 완전히 이동해야 하므로 성능이 영향을 받고 원본 서버의 부하가 증가합니다.

  • FORCE_CACHE_ALL: Cache-Control 응답 헤더의 private 또는 no-store 지시문을 무시하고 모든 콘텐츠(성공적인 응답)를 캐시합니다. 이로 인해 사용자별 비공개(사용자 식별 가능) 콘텐츠를 캐시할 수 있습니다. Cloud Storage 버킷과 같이 비공개 또는 동적 콘텐츠를 제공하지 않는 백엔드에서만 이 모드를 사용 설정해야 합니다. 비공개 또는 동적 콘텐츠를 제공하는 백엔드에서는 이를 사용 설정하지 마세요.

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": {
  "cacheMode": (CACHE_ALL_STATIC | USE_ORIGIN_HEADERS | FORCE_CACHE_ALL)

CACHE_MODE를 다음 중 하나로 바꿉니다.

  • CACHE_ALL_STATIC(기본값): 정적 콘텐츠를 자동으로 캐시합니다. 캐시할 수 없다고 표시된 응답(Cache-Control 응답 헤더의 private 또는 no-store 지시문)은 캐시되지 않습니다. 동적 콘텐츠를 캐시하려면 콘텐츠에 유효한 캐싱 헤더가 있어야 합니다.

  • USE_ORIGIN_HEADERS: 원본에서 콘텐츠를 캐시하도록 유효한 캐싱 헤더를 설정해야 합니다. 이 헤더가 없는 응답은 Google 에지에서 캐시되지 않으며 요청마다 원본으로 완전히 이동해야 하므로 성능이 영향을 받고 원본 서버의 부하가 증가합니다.

  • FORCE_CACHE_ALL: Cache-Control 응답 헤더의 private 또는 no-store 지시문을 무시하고 모든 콘텐츠(성공적인 응답)를 캐시합니다. 이로 인해 사용자별 비공개(사용자 식별 가능) 콘텐츠를 캐시할 수 있습니다. Cloud Storage 버킷과 같이 비공개 또는 동적 콘텐츠를 제공하지 않는 백엔드에서만 이 모드를 사용 설정해야 합니다.