동적 압축은 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
로 설정합니다.미디어 CDN은 응답의 예상 압축 비율과 압축 속도 또는 처리량을 기반으로 최적의 압축 알고리즘을 선택합니다.
Brotli 압축은 클라이언트에서 지원하는 경우 다른 압축 알고리즘의
Accept-Encoding
헤더에 더 높은q
값이 있더라도 사용됩니다.HLS 매니페스트는
gzip
만 사용하여 압축됩니다.
Media CDN은 클라이언트의 총 다운로드 크기와 CPU 비용의 균형을 맞출 압축 수준을 결정합니다. 압축 수준이 높다고 해서 항상 성능의 이점을 얻을 수 있는 것은 아니며, 특히 성능이 낮은 휴대기기에서는 더 그렇습니다.
동적 압축 해제 구성
요청을 제공하는 경로에서 동적 압축을 사용 설정할 수 있습니다.
시작하기 전에
다음 단계를 따르세요.
게재할 준비가 된 압축 가능한 콘텐츠가 있는 Media CDN 출처를 식별하거나 생성합니다.
경로 규칙이 하나 이상 있는 Media CDN 서비스를 식별 또는 생성합니다.
경로 규칙에 동적 압축 사용 설정
기본적으로 경로 규칙의 압축 모드는 사용 중지되어 있습니다.
모드를 자동으로 설정하면 요건을 충족하는 모든 응답에 동적 압축이 사용 설정됩니다. 또한 Media CDN에 최적의 압축 알고리즘을 자동으로 선택하도록 안내합니다.
동적 압축을 사용 설정하려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.
경로 규칙을 구성하려는 서비스의 세부정보 페이지를 열려면 서비스 이름을 클릭합니다.
수정 모드로 전환하려면 수정 버튼을 클릭합니다.
라우팅 섹션으로 이동하려면 다음을 클릭합니다.
호스트 규칙을 수정하려면 화살표를 클릭하여 펼칩니다.
경로 규칙을 수정하려면 각 행에서
수정을 클릭합니다.라우트 규칙 수정 창에서 고급 구성을 클릭합니다.
선택사항: 라우팅 작업에 CDN 정책 항목을 추가합니다.
CDN 정책을 사용하면 Media CDN이 콘텐츠를 한 번 압축하고 여러 번 제공할 수 있으므로 대역폭을 절약하고 전송 속도를 높일 수 있습니다.
동적 압축 섹션에서 압축 사용 설정을 선택합니다.
경로 규칙을 저장하려면 저장을 클릭합니다.
서비스에 대한 변경사항을 저장하려면 서비스 업데이트를 클릭합니다.
gcloud 및 YAML
YAML 파일로 미디어 CDN 구성을 내보냅니다.
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 파일에서 미디어 CDN 구성을 가져옵니다.
gcloud edge-cache services import
명령어를 사용합니다.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
구성이 모든 에지 위치에 곧 적용됩니다.
경로에 동적 압축이 사용 설정되어 있고 프로덕션 머신에 새 구성이 적용되면 Media CDN은 압축되지 않은 캐시된 버전이 있는 경우에도 요건을 충족하는 응답을 압축하기 시작합니다. Media CDN이 새 콘텐츠를 가져와 압축하는 동안 원본으로 향하는 트래픽이 일시적으로 급증할 수 있습니다.
경로 규칙의 동적 압축 사용 중지
동적 압축을 사용 중지하려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.
경로 규칙을 구성하려는 서비스의 세부정보 페이지를 열려면 서비스 이름을 클릭합니다.
수정 모드로 전환하려면 수정 버튼을 클릭합니다.
라우팅 섹션으로 이동하려면 다음을 클릭합니다.
호스트 규칙을 수정하려면 화살표를 클릭하여 펼칩니다.
경로 규칙을 수정하려면 각 행에서
수정을 클릭합니다.라우트 규칙 수정 창에서 고급 구성을 클릭합니다.
동적 압축 섹션에서 압축 사용 설정을 선택 해제합니다.
경로 규칙을 저장하려면 저장을 클릭합니다.
서비스에 대한 변경사항을 저장하려면 서비스 업데이트를 클릭합니다.
gcloud 및 YAML
YAML 파일로 미디어 CDN 구성을 내보냅니다.
gcloud edge-cache services export
명령어를 사용합니다.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
다음을 바꿉니다.
SERVICE_NAME
: 서비스 이름FILENAME
: YAML 파일의 이름
YAML 파일의 경로 정의에서
compressionMode
를DISABLED
로 설정합니다.서비스를 업데이트하려면 YAML 파일에서 미디어 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
헤더가 있습니다. 이는 출처에서 이미 응답을 압축했음을 의미합니다. 따라서 미디어 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에서 응답을 압축하면 관련 아웃바운드 캐시 또는 인터넷 데이터 전송 요금은 클라이언트에 전송된 최종 압축 바이트를 기준으로 합니다.
압축 가능한 대량의 응답을 제공하는 경우 월별 아웃바운드 데이터 전송 비용이 줄어들고 최종 사용자의 성능이 향상될 수 있습니다.