이 페이지는 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개의 내부 서버 오류와 같은 실패 응답을 캐시하여 오류 복구 시간을 제공합니다.
콘솔
- Google Cloud Console에서 부하 분산 페이지로 이동합니다.
- 외부 HTTP(S) 부하 분산기의 이름을 클릭합니다.
- 수정 을 클릭합니다.
- 백엔드 구성에서 백엔드를 선택하고 수정 을 클릭합니다.
- Cloud CDN 사용 설정이 선택되어 있는지 확인합니다.
- 창 하단에서 고급 구성을 클릭합니다.
- 음성 캐싱 사용 설정을 클릭합니다.
- 음성 캐싱 정책 추가를 클릭합니다.
- HTTP 상태 코드를 입력합니다.
- 캐시 TTL(수명)을 선택합니다.
- 업데이트를 클릭합니다.
- 업데이트를 다시 클릭합니다.
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
로 설정되면 음성 캐싱이 지정된 응답 코드가 있는 모든 응답에 적용되고 모든 캐싱 헤더가 재정의됩니다.
음성 캐싱 사용 중지
콘솔
- Google Cloud Console에서 부하 분산 페이지로 이동합니다.
- 외부 HTTP(S) 부하 분산기의 이름을 클릭합니다.
- 수정 을 클릭합니다.
- 백엔드 구성에서 백엔드를 선택하고 수정 을 클릭합니다.
- Cloud CDN 사용 설정이 선택되어 있는지 확인합니다.
- 창 하단에서 고급 구성을 클릭합니다.
- 음성 캐싱 사용 설정을 클릭합니다.
- 음성 캐싱 정책을 삭제합니다.
- 음성 캐싱 사용 설정 옆의 체크박스를 선택 해제합니다.
- 업데이트를 클릭합니다.
- 업데이트를 다시 클릭합니다.
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 }