동적 압축은 Media CDN에서 제공하는 응답을 자동으로 압축합니다. 네트워크를 통해 전송되는 데이터의 크기는 일반적인 경우 60%~85%까지 감소합니다.
크기를 줄이면 스타일시트 (CSS), 스크립트 (JavaScript), 동영상 매니페스트(HLS/DASH)와 같은 중요한 애셋의 다운로드가 빨라져 페이지 로드 및 동영상 시작 시간을 크게 줄일 수 있습니다.
대규모 라이브 동영상 재생목록 (매니페스트)에는 HLS 또는 DASH 재생목록 메타데이터는 물론 각 세그먼트의 호스트 및 경로 접두사를 비롯한 상당한 양의 반복 데이터와 가져오기가 있습니다. 재생목록 로드 또는 재생목록 업데이트가 더 빨리 다운로드될수록 클라이언트가 참조된 동영상 세그먼트 파싱 및 다운로드를 대기하는 시간이 줄어듭니다. HLS 및 DASH 재생목록은 총 크기가 90% 넘게 감소하는 경우가 많습니다.
응답 압축의 이점에 대한 자세한 내용은 웹 기초 가이드를 참고하세요.
동적 압축 작동 방식
동적 압축이 사용 설정되면 클라이언트가 지원되는 압축 알고리즘 (br
또는 gzip
) 중 하나를 수락하는 경우 원본에서 제공되는 압축 가능한 콘텐츠가 전송되기 전에 압축될 수 있습니다.
Media CDN은 압축이 가능한 모든 응답에 Vary: Accept-Encoding
헤더를 추가합니다. 관련 정보는 압축할 수 없는 콘텐츠를 참고하세요.
또한 요청의 Accept-Encoding
헤더가 br
또는 gzip
를 지정하여 압축된 콘텐츠를 선호한다고 나타내는 경우 (선택적으로 0이 아닌 q
매개변수 포함) Media CDN은 다음을 실행합니다.
응답에서
Content-Length
헤더를 삭제합니다. 이는 전체 응답이 압축될 때까지 전체 콘텐츠 길이를 알 수 없으므로 응답이 가능한 한 빠르게 제공될 수 있도록 하는 데 필요합니다. HTTP/1.1 이하의 경우 Media CDN은Content-Length
를 사용하지 않으면 응답에Transfer-Encoding: chunked
를 사용합니다.응답이 압축되고 캐시되면 Media CDN은 후속 응답에
Content-Length
헤더를 포함하고 값을 압축된 본문 콘텐츠의 길이로 설정할 수 있습니다.Accept-Ranges
를none
로 설정합니다. 이 리소스에 대한 범위 요청이 무시된다고 클라이언트에 알립니다.RFC 9110 섹션 8.8.3에 따라 강력한
ETag
응답 헤더를 약화합니다. 예를 들어ETag: "xyzzy"
은ETag: W/"xyzzy"
으로 바뀝니다.선택한 압축 알고리즘을 나타내는
Content-Encoding
헤더를br
또는gzip
로 설정합니다.Media CDN은 예상되는 응답의 압축률과 압축 속도 또는 처리량을 기반으로 최적의 압축 알고리즘을 선택합니다.
클라이언트가 지원하는 경우 다른 압축 알고리즘의
Accept-Encoding
헤더에q
값이 더 높더라도 Brotli 압축이 사용됩니다.HLS 매니페스트는
gzip
만 사용하여 압축됩니다.
Media CDN은 클라이언트의 총 다운로드 크기와 CPU 비용의 균형을 맞출 압축 수준을 결정합니다. 압축 수준이 높다고 해서 항상 성능의 이점을 얻을 수 있는 것은 아니며, 특히 성능이 낮은 휴대기기에서는 더 그렇습니다.
동적 압축 구성
요청을 처리하는 경로에서 동적 압축을 사용 설정할 수 있습니다.
시작하기 전에
다음 단계를 따르세요.
제공할 준비가 된 압축 가능한 콘텐츠가 있는 Media CDN 원본을 식별하거나 만듭니다.
경로 규칙이 하나 이상 있는 Media CDN 서비스를 식별하거나 만듭니다.
경로 규칙에 동적 압축 사용 설정
기본적으로 경로 규칙의 압축 모드는 사용 중지되어 있습니다.
모드를 자동으로 설정하면 적격한 모든 응답에 동적 압축이 사용 설정됩니다. 또한 Media CDN이 최적의 압축 알고리즘을 자동으로 선택하도록 지시합니다.
동적 압축을 사용 설정하려면 다음을 실행하세요.
콘솔
Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.
경로 규칙을 구성할 서비스의 세부정보 페이지를 열려면 서비스 이름을 클릭합니다.
수정 모드로 전환하려면 수정 버튼을 클릭합니다.
라우팅 섹션으로 이동하려면 다음을 클릭합니다.
호스트 규칙을 수정하려면 화살표를 클릭하여 펼칩니다.
경로 규칙을 수정하려면 해당 행에서
수정을 클릭합니다.경로 규칙 수정 창에서 고급 구성을 클릭합니다.
선택사항: 라우팅 작업에서 CDN 정책 항목을 추가합니다.
CDN 정책을 사용하면 Media CDN이 콘텐츠를 한 번 압축하고 여러 번 제공할 수 있으므로 대역폭을 절약하고 전송 속도를 높일 수 있습니다.
동적 압축 섹션에서 압축 사용 설정을 선택합니다.
경로 규칙을 저장하려면 저장을 클릭합니다.
서비스에 대한 변경사항을 저장하려면 서비스 업데이트를 클릭합니다.
gcloud 및 YAML
Media CDN 구성을 YAML 파일로 내보냅니다.
gcloud edge-cache services export
명령어를 사용합니다.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
다음을 바꿉니다.
SERVICE_NAME
: 서비스 이름FILENAME
: YAML 파일의 이름
YAML 파일의 경로 정의에서
routeAction
아래에compressionMode
을AUTOMATIC
로 설정합니다(다음 샘플 참고).routing: hostRules: - hosts: - media.example.com pathMatcher: routes pathMatchers: - name: routes routeRules: - priority: 2 origin: origin1 matchRules: - pathTemplateMatch: "/**.m3u8" # HLS playlists - pathTemplateMatch: "/**.mpd" # DASH manifests routeAction: cdnPolicy: defaultTtl: 5s compressionMode: AUTOMATIC
서비스를 업데이트하려면 YAML 파일에서 Media CDN 구성을 가져옵니다.
gcloud edge-cache services import
명령어를 사용합니다.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Terraform
다음 Terraform 스니펫은 동적 압축이 사용 설정된 경로 규칙을 보여줍니다.
잠시 후 모든 에지 위치에 구성이 적용됩니다.
경로에 동적 압축이 사용 설정되고 새 구성이 프로덕션 머신에 적용되면 압축되지 않은 캐시 버전이 있더라도 Media CDN은 적격한 응답을 압축하기 시작합니다. Media CDN이 새 콘텐츠를 가져와 압축하는 동안 원본으로 향하는 트래픽이 일시적으로 급증할 수 있습니다.
경로 규칙의 동적 압축 사용 중지
동적 압축을 사용 중지하려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.
경로 규칙을 구성할 서비스의 세부정보 페이지를 열려면 서비스 이름을 클릭합니다.
수정 모드로 전환하려면 수정 버튼을 클릭합니다.
라우팅 섹션으로 이동하려면 다음을 클릭합니다.
호스트 규칙을 수정하려면 화살표를 클릭하여 펼칩니다.
경로 규칙을 수정하려면 해당 행에서
수정을 클릭합니다.경로 규칙 수정 창에서 고급 구성을 클릭합니다.
동적 압축 섹션에서 압축 사용 설정을 선택 해제합니다.
경로 규칙을 저장하려면 저장을 클릭합니다.
서비스에 대한 변경사항을 저장하려면 서비스 업데이트를 클릭합니다.
gcloud 및 YAML
Media CDN 구성을 YAML 파일로 내보냅니다.
gcloud edge-cache services export
명령어를 사용합니다.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
다음을 바꿉니다.
SERVICE_NAME
: 서비스 이름FILENAME
: YAML 파일의 이름
YAML 파일의 경로 정의에서
compressionMode
을DISABLED
으로 설정합니다.서비스를 업데이트하려면 YAML 파일에서 Media CDN 구성을 가져옵니다.
gcloud edge-cache services import
명령어를 사용합니다.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
특정 경로의 동적 압축에 문제가 있는 경우(예: 특정 클라이언트(스마트 TV 또는 스트리밍 기기)와의 호환성 문제) Media CDN이 해당 경로에서 압축된 콘텐츠를 제공하지 않도록 동적 압축을 사용 중지하세요.
경로에 대해 동적 압축을 사용 중지하면 Media CDN이 캐시에서 압축된 콘텐츠 제공을 중지합니다. 이전에 캐시된 모든 압축된 응답이 무효화되고 CDN이 원본에서 압축되지 않은 버전을 가져옵니다.
압축 가능한 콘텐츠 유형
동적 압축은 Content-Type
HTTP 응답 헤더를 기준으로 다음 MIME 유형에 적용됩니다. Content-Type
헤더가 없는 응답은 압축되지 않습니다.
일반적인 콘텐츠 유형과 MIME 유형은 다음과 같습니다.
- HTML 콘텐츠:
text/html
- 스타일시트:
text/css
- 자바스크립트:
application/javascript
- JSON:
application/json
- HLS 재생목록:
application/x-mpegURL
또는application/vnd.apple.mpegURL
- DASH 매니페스트:
application/dash+xml
다음 표에는 MIME 유형이 압축 가능성에 미치는 영향이 요약되어 있습니다.
압축 가능한 MIME 유형 | |
---|---|
일치검색 |
application/csv application/javascript application/json application/json+protobuf application/signed-exchange application/wasm application/x-javascript application/x-nacl application/x-plist application/x-pnacl application/x-protobuf application/x-protobuffer application/x-sdch-dictionary application/xml audio/mpegURL font/eot font/otf font/ttf image/pwg-raster image/svg+xml image/vnd.microsoft.icon image/x-icon video/vnd.mpeg.dash.mpd |
패턴 일치 | application/*+json application/*+xml application/*mpegURL text/* |
이미지 및 동영상 형식 (예: image/jpeg
, image/png
, video/mpeg4
)은 거의 항상 압축되어 있습니다. 따라서 Media CDN은 이를 압축하지 않습니다. 이미 압축된 응답을 다시 압축하면 파일 크기가 거의 줄어들지 않으며 클라이언트가 이러한 종류의 응답을 받을 때 예기치 않은 동작이 발생할 수 있습니다.
압축할 수 없는 응답
Media CDN은 다음 특성 중 하나 이상을 가진 응답을 압축하지 않습니다.
- 응답에 압축 가능한 콘텐츠 유형과 일치하는
Content-Type
헤더가 없습니다. - 응답에
Content-Length
헤더가 없습니다. - 응답에
Content-Encoding
헤더가 있습니다. 이는 출처가 이미 응답을 압축했음을 의미합니다. 따라서 Media CDN은 추가 동적 압축을 실행해서는 안 됩니다. 대답이 1KiB보다 작습니다.
압축 및 압축 해제에 소비된 시간은 종종 이점을 상쇄합니다. 압축할 콘텐츠도 적기 때문에 압축 효율이 떨어져 압축률이 낮을 수 있습니다.
대답이 1MiB보다 큽니다.
Media CDN은 바이트 범위 캐싱 없이 객체를 캐싱할 수 있는 크기까지 응답을 압축합니다.
응답에
Cache-Control: no-transform
헤더가 있습니다.응답에
Vary: Accept-Encoding
헤더가 있습니다. 이는 원본이 응답을 압축할 수 있으므로 동적 압축이 필요하지 않음을 의미합니다.
로깅 및 모니터링
압축이 사용 설정되면 edgecache.googleapis.com/EdgeCacheRouteRule
아래의 기존 https/response_bytes_count
측정항목이 압축된 응답 크기를 보고합니다. 압축 가능한 콘텐츠의 경우 총 응답 바이트와 아웃바운드 데이터 전송 처리량이 감소할 것으로 예상됩니다.
Media CDN 로그는 부하 분산기에서 응답을 압축했는지 여부와 압축 유형을 나타내는 compressionAlgorithmApplied
필드를 jsonPayload
에 포함합니다.
{ insertId: "1c02hw9g3gjay67" jsonPayload: { @type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry", cacheId: "IAD-862d661f", cacheStatus": "hit,stale", compressionAlgorithmApplied: "br" }, }
결제
Media CDN에서 응답을 압축하면 관련 아웃바운드 캐시 또는 인터넷 데이터 전송 요금이 클라이언트에 전송된 최종 압축 바이트를 기준으로 부과됩니다.
압축 가능한 대량의 응답을 제공하는 경우 월별 아웃바운드 데이터 전송 비용이 줄어들고 최종 사용자의 성능이 향상될 수 있습니다.