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

    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 do 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 veicular 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 ao cliente.

Se você estiver veiculando 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, bem como no aumento do desempenho para os usuários finais.

A seguir