음성 캐싱 사용

이 페이지는 Cloud CDN으로 음성 캐싱을 사용하는 방법을 설명합니다. 음성 캐싱을 사용하면 각 상태 코드에 서로 다른 TTL을 설정할 수 있습니다.

이렇게 하는 이유는 일반적인 오류나 리디렉션을 위해 캐싱을 세밀하게 제어해야 하기 때문입니다. 이렇게 하면 응답 지연 시간이 단축되므로 원본의 부하를 줄이고 최종 사용자 환경을 개선할 수 있습니다.

시작하기 전에

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

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

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

    gcloud components update
    

상태 코드 및 기본 TTL

음성 캐싱은 다음 표에 나열된 특정 상태 코드에 적용됩니다.

Cloud CDN은 다음과 같은 기본 TTL을 상태 코드에 적용합니다.

상태 코드 의미 TTL
HTTP 300 다중 선택 10분
HTTP 301 및 308 영구 리디렉션 10분
HTTP 404 찾을 수 없음 120초
HTTP 405 메서드 없음 60초
HTTP 410 없음 120초
HTTP 421 잘못 전달된 요청 60초
HTTP 451 법적 사유로 사용할 수 없음 120초
HTTP 501 구현되지 않음 60초

음성 캐싱을 사용하여 이러한 기본값을 재정의하면 지정된 HTTP 상태 코드에 캐시 TTL을 설정할 수 있습니다.

음성 캐싱 설정

음성 캐싱을 사용하면 성공뿐만 아니라 실패도 캐시하도록 서비스를 구성할 수 있습니다.

백엔드가 제대로 작동하지 않으면 일반적으로 응답이 캐시되는 성공이기 때문에 백엔드에 트래픽이 늘어날 수 있습니다. 지연 시간이 길수록 응답이 매번 새로 가져오므로 백엔드가 다시 온라인 상태로 전환되는 데 시간이 걸릴 수 있습니다. Cloud CDN은 단기간에 500개의 내부 서버 오류와 같은 실패 응답을 캐시하여 오류 복구 시간을 제공합니다.

콘솔

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

    부하 분산 페이지로 이동

  2. 외부 HTTP(S) 부하 분산기의 이름을 클릭합니다.
  3. 수정 을 클릭합니다.
  4. 백엔드 구성에서 백엔드를 선택하고 수정 을 클릭합니다.
  5. Cloud CDN 사용 설정이 선택되어 있는지 확인합니다.
  6. 창 하단에서 고급 구성을 클릭합니다.
  7. 음성 캐싱 사용 설정을 클릭합니다.
  8. 음성 캐싱 정책 추가를 클릭합니다.
    1. HTTP 상태 코드를 입력합니다.
    2. 캐시 TTL(수명)을 선택합니다.
  9. 업데이트를 클릭합니다.
  10. 업데이트를 다시 클릭합니다.

gcloud

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

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

gcloud beta compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --negative-caching
gcloud beta compute backend-services (create | update) BACKEND_SERVICE_NAME
    --negative-caching

예를 들어 상태 코드 404이 있는 응답을 60초 동안 캐시하도록 설정하고 상태 코드가 405인 응답을 120초 동안 캐시하도록 설정하는 것과 같이 특정 오류 응답 2개에 대해서만 음성 캐싱을 사용 설정하려면 다음일 실행합니다.

gcloud beta compute backend-services update BACKEND_SERVICE_NAME \
    --negative-caching \
    --cache-mode=CACHE_ALL_STATIC \
    --default-ttl=86400 \
    --negative-caching-policy='404=60,405=120'

api

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

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

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

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

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

"cdnPolicy": {
  "negativeCaching": ON,
  "negativeCachingPolicy": [
    {
      "code": STATUS_CODE,
      "ttl": TTL_SECONDS
    }
  ]
}

negativeCachingPolicy 설정을 구성하려면 음성 캐싱을 사용 설정해야 합니다. 정책을 생략하고 negativeCaching을 사용 설정하면 Cloud CDN은 상태 코드 및 기본 TTL에 나열된 기본값을 사용합니다.

음성 캐싱 정책을 지정할 때는 캐시할 모든 응답 코드에 캐시 TTL을 지정해야 합니다. Cloud CDN은 정책이 존재하면 어떠한 기본 음성 캐싱도 적용하지 않습니다.

STATUS_CODE에는 HTTP 상태 코드(300, 301, 308, 404, 405, 410, 421, 451, 501)를 지정할 수 있습니다.

각 상태 코드에는 응답을 캐시할 시간(초)을 지정할 수 있습니다. TTL 필드를 생략하여 상태 코드의 음성 캐싱을 중지합니다.

최대 허용 값은 1, 800초(30분)입니다. 하지만 자주 액세스되지 않는 객체는 정의된 TTL 이전에 캐시에서 삭제될 수 있습니다.

캐시 모드가 CACHE_ALL_STATIC 또는 USE_ORIGIN_HEADERS로 설정되면 cache-control 또는 expires 헤더가 없는 지정된 응답 코드가 있는 응답에 음성 캐싱이 적용됩니다. 캐시 모드가 FORCE_CACHE_ALL로 설정되면 음성 캐싱이 지정된 응답 코드가 있는 모든 응답에 적용되고 모든 캐싱 헤더가 재정의됩니다.

음성 캐싱 사용 중지

콘솔

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

    부하 분산 페이지로 이동

  2. 외부 HTTP(S) 부하 분산기의 이름을 클릭합니다.
  3. 수정 을 클릭합니다.
  4. 백엔드 구성에서 백엔드를 선택하고 수정 을 클릭합니다.
  5. Cloud CDN 사용 설정이 선택되어 있는지 확인합니다.
  6. 창 하단에서 고급 구성을 클릭합니다.
  7. 음성 캐싱 사용 설정을 클릭합니다.
  8. 음성 캐싱 정책을 삭제합니다.
  9. 음성 캐싱 사용 설정 옆의 체크박스를 선택 해제합니다.
  10. 업데이트를 클릭합니다.
  11. 업데이트를 다시 클릭합니다.

gcloud

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

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

gcloud beta compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
    --no-negative-caching

api

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

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

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

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

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

"cdnPolicy": {
  "negativeCaching": OFF
}