Ativar a compactação dinâmica

A compactação dinâmica compacta automaticamente as respostas disponibilizadas pelo Media CDN. O tamanho dos dados enviados pela rede é reduzido de 60% para 85% nos casos típicos.

A redução de tamanho acelera o download de recursos importantes, como folhas de estilo (CSS), scripts (JavaScript) e manifestos de vídeo (HLS/DASH), o que pode reduzir significativamente os tempos de carregamento de página e de início do vídeo.

Playlists de vídeo ao vivo grandes (manifestos) têm uma quantidade significativa de dados e buscas repetidos, incluindo o host e o prefixo de caminho de cada segmento, bem como os metadados de playlist HLS ou DASH. Quanto mais rápido o download ou a atualização da playlist forem feitos, menor será o tempo de espera do cliente para a análise e o início do download dos segmentos de vídeo referenciados. As playlists HLS e DASH geralmente passam por uma redução total de tamanho de mais de 90%.

Para mais informações sobre os benefícios da compactação de respostas, consulte o Guia de fundamentos da Web.

Como funciona a compactação dinâmica

Quando a compactação dinâmica está ativada, o conteúdo compactável disponibilizado pela origem pode ser compactado antes de ser entregue se o cliente aceitar um dos algoritmos de compactação compatíveis (br ou gzip).

O Media CDN adiciona um cabeçalho Vary: Accept-Encoding a todas as respostas qualificadas para compactação. Para informações relacionadas, consulte Conteúdo não compactável.

Além disso, se o cabeçalho Accept-Encoding da solicitação indicar uma preferência por conteúdo compactado especificando br ou gzip (e, opcionalmente, incluindo um parâmetro q diferente de zero), o Media CDN fará o seguinte:

  • Remove o cabeçalho Content-Length da resposta. Isso é necessário para que a resposta seja disponibilizada o mais rápido possível, porque o comprimento total do conteúdo é desconhecido até que toda a resposta seja compactada. Para HTTP/1.1 e anteriores, o Media CDN usa Transfer-Encoding: chunked na resposta quando não usa Content-Length.

    Depois que uma resposta tiver sido compactada e armazenada em cache, o Media CDN poderá incluir o cabeçalho Content-Length nas respostas subsequentes e definir o valor como o comprimento do conteúdo do corpo compactado.

  • Define Accept-Ranges como none. Isso informa aos clientes que as solicitações de intervalo para esse recurso são ignoradas.

  • Enfraquece todos os cabeçalhos de resposta ETag fortes, conforme exigido pela seção 8.8.3 da RFC 9110. Por exemplo, ETag: "xyzzy" é substituído por ETag: W/"xyzzy".

  • Define o cabeçalho Content-Encoding como br ou gzip, que significa o algoritmo de compactação escolhido.

    O Media CDN escolhe o melhor algoritmo de compactação com base na proporção de compactação prevista da resposta e na velocidade ou capacidade de processamento da compactação.

    • A compactação Brotli é usada se o cliente a oferecer suporte, mesmo que outros algoritmos de compactação tenham valores q mais altos no cabeçalho Accept-Encoding.

    • Os manifestos HLS são compactados usando apenas gzip.

    O Media CDN determina o nível de compactação para equilibrar o tamanho total do download e o custo da CPU no cliente. Níveis de compactação mais altos nem sempre beneficiam o desempenho, especialmente em dispositivos móveis com menor consumo de energia.

Configurar a compactação dinâmica

É possível ativar a compactação dinâmica em rotas que atendem a solicitações.

Antes de começar

Faça o seguinte:

Ativar a compactação dinâmica para uma regra de rota

Por padrão, o modo de compactação de uma regra de rota está desativado.

Definir o modo como automático ativa a compactação dinâmica para todas as respostas qualificadas. Além disso, instrui o Media CDN a escolher automaticamente o melhor algoritmo de compactação.

Para ativar a compactação dinâmica, faça o seguinte:

Console

  1. No Google Cloud console do, acesse a página Media CDN.

    Acesse Media CDN

  2. Para abrir a página Detalhes do serviço em que você quer configurar uma regra de rota, clique no nome do serviço.

  3. Para mudar para o modo de edição, clique no botão Editar.

  4. Para navegar até a seção Roteamento, clique em Próxima.

  5. Para editar uma regra de host, clique na seta para expandi-la.

  6. Para editar uma regra de rota, clique em Editar na linha correspondente.

  7. No painel Editar regra de rota, clique em Configurações avançadas.

  8. Opcional: em Rota de ação, adicione um política de CDN item.

    Uma política de CDN permite que o Media CDN compacte o conteúdo uma vez e o disponibilize várias vezes, o que economiza largura de banda e acelera a entrega.

  9. Na seção Compactação dinâmica, selecione Ativar compactação.

  10. Para salvar a regra de rota, clique em Salvar.

  11. Para salvar as alterações no serviço, clique em Atualizar serviço.

gcloud e YAML

  1. Exporte a configuração do Media CDN para um arquivo YAML. Use o gcloud edge-cache services export comando.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Substitua:

    • SERVICE_NAME: o nome do serviço;
    • FILENAME : o nome do arquivo YAML.
  2. Na definição de rota no arquivo YAML, em routeAction, defina compressionMode como AUTOMATIC, conforme mostrado no exemplo a seguir:

    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
    
  3. Para atualizar o serviço, importe a configuração do Media CDN do arquivo YAML. Use o gcloud edge-cache services import comando.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Terraform

O snippet do Terraform a seguir mostra uma regra de rota com a compactação dinâmica ativada.

route_rule {
  description = "a route rule with dynamic compression, priority=2 (high)"
  priority    = 2
  match_rule {
    path_template_match = "/**.m3u8" # HLS playlists
  }
  match_rule {
    path_template_match = "/**.mpd" # DASH manifests
  }
  origin = google_network_services_edge_cache_origin.default.name
  route_action {
    cdn_policy {
      cache_mode = "FORCE_CACHE_ALL"
      client_ttl = "300s"
    }
    compression_mode = "AUTOMATIC"
  }
  header_action {
    response_header_to_add {
      header_name  = "x-cache-status"
      header_value = "{cdn_cache_status}"
    }
  }
}

Sua configuração será propagada em breve para todos os locais de borda.

Quando a compactação dinâmica está ativada para uma rota e a nova configuração entra em vigor em máquinas de produção, o Media CDN começa a compactar respostas qualificadas, mesmo que versões armazenadas em cache não compactadas existam. Enquanto o Media CDN busca e compacta novos conteúdos, pode haver um pico temporário no tráfego para sua origem.

Desativar a compactação dinâmica para uma regra de rota

Para desativar a compactação dinâmica, faça o seguinte:

Console

  1. No Google Cloud console do, acesse a página Media CDN.

    Acesse Media CDN

  2. Para abrir a página Detalhes do serviço em que você quer configurar a regra de rota, clique no nome do serviço.

  3. Para mudar para o modo de edição, clique no botão Editar.

  4. Para navegar até a seção Roteamento, clique em Próxima.

  5. Para editar uma regra de host, clique na seta para expandi-la.

  6. Para editar uma regra de rota, clique em Editar na linha correspondente.

  7. No painel Editar regra de rota, clique em Configurações avançadas.

  8. Na seção Compactação dinâmica, desmarque Ativar compactação.

  9. Para salvar a regra de rota, clique em Salvar.

  10. Para salvar as alterações no serviço, clique em Atualizar serviço.

gcloud e YAML

  1. Exporte a configuração do Media CDN para um arquivo YAML. Use o gcloud edge-cache services export comando.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Substitua:

    • SERVICE_NAME: o nome do serviço;
    • FILENAME : o nome do arquivo YAML.
  2. Na definição de rota no arquivo YAML, defina compressionMode como DISABLED.

  3. Para atualizar o serviço, importe a configuração do Media CDN do arquivo YAML. Use o gcloud edge-cache services import comando.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Se você encontrar problemas com a compactação dinâmica para uma rota específica, como problemas de compatibilidade com determinados clientes (por exemplo, smart TVs ou dispositivos de streaming), para impedir que o Media CDN disponibilize conteúdo compactado nessa rota, desative a compactação dinâmica.

A desativação da compactação dinâmica para uma rota faz com que o Media CDN pare de disponibilizar conteúdo compactado do cache. Todas as respostas compactadas armazenadas em cache anteriormente se tornam inválidas, e a CDN busca versões não compactadas da sua origem.

Tipos de conteúdo compactável

A compactação dinâmica se aplica aos tipos MIME a seguir, com base no cabeçalho de resposta HTTP Content-Type. As respostas que não têm um cabeçalho Content-Type não são compactadas.

Os tipos de conteúdo comuns e os tipos MIME incluem:

  • Conteúdo HTML: text/html
  • Folhas de estilo: text/css
  • JavaScript: application/javascript
  • JSON: application/json
  • Playlists de HLS: application/x-mpegURL ou application/vnd.apple.mpegURL
  • Manifestos DASH: application/dash+xml

A tabela a seguir resume como o tipo MIME afeta a capacidade de compactação.

  Tipos MIME compactáveis
Correspondência exata 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
Correspondência de padrão application/*+json
application/*+xml
application/*mpegURL
text/*

Os formatos de imagem e vídeo (como image/jpeg, image/png e video/mpeg4) já são quase sempre compactados. Portanto, o Media CDN não os compacta. A recompactação de uma resposta já compactada raramente reduz o tamanho do arquivo e os clientes podem apresentar um comportamento inesperado ao receber uma resposta desse tipo.

Respostas não compactáveis

O Media CDN não compacta uma resposta que tenha uma ou mais destas características:

  • A resposta não tem um cabeçalho Content-Type que corresponda a um tipo de conteúdo compactável.
  • A resposta não tem um cabeçalho Content-Length.
  • A resposta tem um cabeçalho Content-Encoding. Isso implica que a origem já compactou a resposta. Portanto, o Media CDN não pode fazer nenhuma compactação dinâmica adicional.
  • A resposta é menor que 1 KiB.

    O tempo gasto na compactação e descompactação geralmente compensa quaisquer benefícios. Há também menos conteúdo para compactar, o que pode reduzir a eficácia da compactação e levar a uma proporção de compactação mais baixa.

  • A resposta é maior que 1 MiB.

    O Media CDN compacta respostas até o tamanho permitido para objetos de armazenamento em cache sem armazenamento em cache de intervalo de bytes.

  • A resposta tem um cabeçalho Cache-Control: no-transform.

Geração de registros e monitoramento

Quando a compactação está ativada, a métrica https/response_bytes_count de edgecache.googleapis.com/EdgeCacheRouteRule informa o tamanho da resposta compactada. Haverá uma queda no total de bytes de resposta e na capacidade de processamento da transferência de dados de saída para conteúdo compactável.

Os registros do Media CDN incluem um campo compressionAlgorithmApplied no jsonPayload, que indica se a resposta foi compactada pelo balanceador de carga, assim como o tipo de compactação.

{
  insertId: "1c02hw9g3gjay67"
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
    cacheId: "IAD-862d661f",
    cacheStatus": "hit,stale",
    compressionAlgorithmApplied: "br"
  },
}

Faturamento

Quando uma resposta é compactada pelo Media CDN, as cobranças relevantes de transferência de dados de saída do cache ou da Internet são baseadas nos bytes compactados finais enviados para o cliente.

Se estiver sendo disponibilizada uma grande quantidade de respostas compactáveis, isso pode resultar em uma redução nas taxas mensais de transferência de dados de saída e no aumento do desempenho para os usuários finais.

A seguir