Ativar a compactação dinâmica

A compactação dinâmica compacta automaticamente as respostas exibidas 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 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 a compactação dinâmica funciona

Quando a compactação dinâmica está ativada, o conteúdo compactável que é veiculado da origem pode ser compactado antes de ser entregue se o cliente aceitar um dos algoritmos de compactação aceitos (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 compressí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 permitir que a resposta seja veiculada o mais rápido possível, porque o comprimento total do conteúdo é desconhecido até que toda a resposta tenha sido compactada. Para HTTP/1.1 e versões 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, o Media CDN poderá incluir o cabeçalho Content-Length em respostas subsequentes e definir o valor para 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.

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

    • A compactação Brotli é usada se o cliente oferecer suporte a ela, mesmo que outros algoritmos de compactação tenham valores de 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 descompactaçã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.

A configuração do modo como automático ativa a compactação dinâmica para cada resposta qualificada. Além disso, ele 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 console do Google Cloud, acesse a página Media CDN.

    Acesse Media CDN

  2. Para abrir a página Detalhes do serviço para o qual você quer configurar uma regra de roteamento, 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 abri-la.

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

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

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

    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 a compactação.

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

  11. Para salvar as mudanças 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 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 do Media CDN do arquivo YAML. Use o comando gcloud edge-cache services import.

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

Sua configuração será 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, o Media CDN começa a compactar as respostas qualificadas, mesmo que existam versões descompactadas armazenadas em cache. Enquanto a CDN de mídia busca e compacta o novo conteúdo, pode haver um pico temporário no tráfego para a 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 do Google Cloud, acesse a página Media CDN.

    Acesse Media CDN

  2. Para abrir a página Detalhes do serviço para o qual você quer configurar a regra de roteamento, 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 abri-la.

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

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

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

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

  10. Para salvar as mudanças 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 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 do 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ê tiver problemas com a compactação dinâmica de 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 transmita conteúdo compactado nessa rota.

A desativação da compactação dinâmica em uma rota faz com que o Media CDN pare de mostrar conteúdo compactado do cache. Todas as respostas compactadas armazenadas em cache anteriormente se tornam inválidas, e o CDN busca versões descompactadas 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) quase sempre já estão 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 incompressíveis

A CDN de mídia 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, 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 as respostas até o tamanho permitido para armazenamento em cache de objetos sem armazenamento em 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 transferência de dados de saída para conteúdo comprimí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 você estiver veiculando uma grande quantidade de respostas compactáveis, isso pode resultar em uma redução nas taxas de saída mensais, assim como no aumento do desempenho para os usuários finais.

A seguir