Ativar a compactação dinâmica

A compactação dinâmica compacta automaticamente as respostas veiculadas pela 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 da 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 têm uma redução de tamanho total de mais de 90%.

Para mais informações sobre os benefícios da compactação de respostas, consulte o Guia de princípios básicos da Web.

Como funciona a compactação dinâmica

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

A 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), a Media CDN fará o seguinte:

  • Remove o cabeçalho Content-Length da resposta. Isso é necessário para permitir que a resposta seja veiculada o mais rápido possível, porque a duração total do conteúdo é desconhecida até que toda a resposta tenha sido 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 for compactada e armazenada em cache, a 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, o que significa o algoritmo de compactação escolhido.

    A Media CDN escolhe o melhor algoritmo de compactação com base na taxa 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 aceitar, 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.

    A 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 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 fica desativado.

Definir o modo como automático ativa a compactação dinâmica para todas as respostas qualificadas. Além disso, ele instrui a 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 console Google Cloud , 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 dele.

  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 abrir.

  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 Ação de rota, adicione um item de política de CDN.

    Com uma política de CDN, a Media CDN compacta o conteúdo uma vez e o disponibiliza 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 mudanças no serviço, clique em Atualizar serviço.

gcloud e YAML

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

    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 da Media CDN do arquivo YAML. Use o comando gcloud edge-cache services import.

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

Terraform

O snippet do Terraform a seguir mostra uma regra de rota com a compressã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 é propagada para todos os locais de borda em breve.

Quando a compactação dinâmica é ativada para uma rota e a nova configuração entra em vigor nas máquinas de produção, a Media CDN começa a compactar as respostas qualificadas, mesmo que existam versões em cache não compactadas. Enquanto a Media CDN busca e compacta conteúdo novo, 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 console Google Cloud , 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 dele.

  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 abrir.

  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 mudanças no serviço, clique em Atualizar serviço.

gcloud e YAML

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

    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 da Media CDN do arquivo YAML. Use o comando gcloud edge-cache services import.

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

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

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

Tipos de conteúdo compactável

A compactação dinâmica se aplica aos seguintes tipos MIME, 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 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 compressibilidade.

  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, a 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

A 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á comprimiu a resposta. Portanto, a 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.

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

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

  • A resposta tem um cabeçalho Vary: Accept-Encoding, o que implica que a compactação dinâmica não é necessária porque a origem pode compactar a resposta.

Geração de registros e monitoramento

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

Os registros da 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 pela Media CDN, as cobranças relevantes de cache de saída ou transferência de dados da Internet são baseadas nos bytes compactados finais enviados ao cliente.

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

A seguir