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 usaTransfer-Encoding: chunked
na resposta quando não usaContent-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
comonone
. 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 porETag: W/"xyzzy"
.Define o cabeçalho
Content-Encoding
comobr
ougzip
, 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çalhoAccept-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:
Identifique ou crie uma origem do Media CDN com conteúdo comprimível pronto para veiculação.
Identifique ou crie um serviço do Media CDN com pelo menos uma regra de rota.
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
No console do Google Cloud , acesse a página Media CDN.
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.
Para mudar para o modo de edição, clique no botão Editar.
Para navegar até a seção Roteamento, clique em Próxima.
Para editar uma regra de host, clique na seta para abri-la.
Para editar uma regra de rota, clique em
Editar na respectiva linha.No painel Editar regra de rota, clique em Configurações avançadas.
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.
Na seção Compactação dinâmica, selecione Ativar a compactação.
Para salvar a regra de roteamento, clique em Salvar.
Para salvar as mudanças no serviço, clique em Atualizar serviço.
gcloud e YAML
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
Na definição de rota do arquivo YAML, em
routeAction
, definacompressionMode
comoAUTOMATIC
, 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
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
No console do Google Cloud , acesse a página Media CDN.
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.
Para mudar para o modo de edição, clique no botão Editar.
Para navegar até a seção Roteamento, clique em Próxima.
Para editar uma regra de host, clique na seta para abri-la.
Para editar uma regra de rota, clique em
Editar na respectiva linha.No painel Editar regra de rota, clique em Configurações avançadas.
Na seção Compactação dinâmica, desmarque a opção Ativar a compactação.
Para salvar a regra de roteamento, clique em Salvar.
Para salvar as mudanças no serviço, clique em Atualizar serviço.
gcloud e YAML
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
Na definição de rota no arquivo YAML, defina
compressionMode
comoDISABLED
.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
ouapplication/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.