A compressão dinâmica comprime automaticamente as respostas publicadas pela RFC. O tamanho dos dados enviados através da rede é reduzido entre 60% e 85% nos casos típicos.
A redução do tamanho acelera a transferência de recursos importantes, como folhas de estilos (CSS), scripts (JavaScript) e manifestos de vídeo (HLS/DASH), o que pode reduzir significativamente os tempos de carregamento de páginas e de início de vídeos.
As playlists de vídeo em direto grandes (manifestos) têm uma quantidade significativa de dados e obtenções repetidos, incluindo o prefixo do anfitrião e do caminho de cada segmento, bem como os metadados da playlist HLS ou DASH. Quanto mais rapidamente a playlist for carregada ou as atualizações da playlist puderem ser transferidas, menos tempo um cliente tem de esperar para analisar e começar a transferir os segmentos de vídeo referenciados. As playlists HLS e DASH sofrem frequentemente uma redução total do tamanho superior a 90%.
Para mais informações sobre as vantagens da compressão de respostas, consulte o guia Web Fundamentals.
Como funciona a compressão dinâmica
Quando a compressão dinâmica está ativada, o conteúdo compressível
publicado a partir da origem pode ser comprimido antes de ser enviado se o
cliente aceitar um dos algoritmos de compressão suportados (br
ou gzip
).
A RFC de multimédia adiciona um cabeçalho Vary: Accept-Encoding
a todas as respostas elegíveis para compressão. Para informações relacionadas, consulte o artigo
Conteúdo não comprimível.
Além disso, se o cabeçalho Accept-Encoding
do pedido indicar uma preferência
por conteúdo comprimido especificando br
ou gzip
(e, opcionalmente, incluindo
um parâmetro q
diferente de zero), a RFC de multimédia faz o seguinte:
Remove o cabeçalho
Content-Length
da resposta. Isto é necessário para permitir que a resposta seja publicada o mais rapidamente possível, porque o comprimento total do conteúdo é desconhecido até que toda a resposta tenha sido comprimida. Para HTTP/1.1 e versões anteriores, a RFC de multimédia usaTransfer-Encoding: chunked
na resposta quando não usaContent-Length
.Depois de uma resposta ser comprimida e colocada em cache, a RFC pode incluir o cabeçalho
Content-Length
nas respostas subsequentes e definir o valor para o comprimento do conteúdo do corpo comprimido.Define
Accept-Ranges
comonone
. Isto informa os clientes de que os pedidos de intervalo para este recurso são ignorados.Enfraquece todos os cabeçalhos de resposta
ETag
fortes, conforme exigido pela secçã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 compressão escolhido.A RFC 7230 define o cabeçalho Content-Encoding como a forma de compressão usada para transmitir o recurso. O Media CDN escolhe o melhor algoritmo de compressão com base na taxa de compressão prevista da resposta e na velocidade de compressão ou no débito.
A compressão Brotli é usada se o cliente a suportar, mesmo que outros algoritmos de compressão tenham valores
q
mais elevados no cabeçalhoAccept-Encoding
.Os manifestos HLS são comprimidos apenas com
gzip
.
A RFC determina o nível de compressão para equilibrar o tamanho total da transferência e o custo da CPU no cliente. Os níveis de compressão mais elevados nem sempre beneficiam o desempenho, especialmente em dispositivos móveis com menor potência.
Configure a compressão dinâmica
Pode ativar a compressão dinâmica em rotas que atendem pedidos.
Antes de começar
Faça o seguinte:
Identifique ou crie uma origem da RFC de multimédia com conteúdo comprimível que esteja pronto para publicação.
Identifique ou crie um serviço de RFC do Media com, pelo menos, uma regra de encaminhamento.
Ative a compressão dinâmica para uma regra de encaminhamento
Por predefinição, o modo de compressão de uma regra de encaminhamento está desativado.
Se definir o modo como automático, ativa a compressão dinâmica para todas as respostas elegíveis. Além disso, indica à RFC para escolher automaticamente o melhor algoritmo de compressão.
Para ativar a compressão dinâmica, faça o seguinte:
Consola
Na Google Cloud consola, aceda à página RFC de multimédia.
Para abrir a página Detalhes do serviço para o qual quer configurar uma regra de encaminhamento, clique no nome do serviço.
Para mudar para o modo de edição, clique no botão Editar.
Para navegar para a secção Encaminhamento, clique em Seguinte.
Para editar uma regra de anfitrião, clique na seta para a expandir.
Para editar uma regra de encaminhamento, clique em
Editar na linha respetiva.No painel Editar regra de encaminhamento, clique em Configurações avançadas.
Opcional: para a ação Route, adicione um item Política de RFC.
Uma política da RFC permite que a RFC de multimédia comprima o conteúdo uma vez e o forneça várias vezes, o que poupa largura de banda e acelera o fornecimento.
Na secção Compressão dinâmica, selecione Ativar compressão.
Para guardar a regra de encaminhamento, clique em Guardar.
Para guardar as alterações ao serviço, clique em Atualizar serviço.
gcloud e YAML
Exporte a configuração da RFC de conteúdo multimédia para um ficheiro YAML. Use o comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Substitua o seguinte:
SERVICE_NAME
: o nome do seu serviçoFILENAME
: o nome do seu ficheiro YAML
Na definição do trajeto no ficheiro YAML, em
routeAction
, definacompressionMode
comoAUTOMATIC
, conforme mostrado no exemplo seguinte: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 da RFC de multimédia a partir do ficheiro YAML. Use o comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Terraform
O seguinte fragmento do Terraform mostra uma regra de encaminhamento com a compressão dinâmica ativada.
A sua configuração é propagada rapidamente para todas as localizações periféricas.
Quando a compressão dinâmica está ativada para uma rota e a nova configuração entra em vigor nas máquinas de produção, a RFC de conteúdo multimédia começa a comprimir as respostas elegíveis, mesmo que existam versões em cache não comprimidas. Enquanto a rede de CDN de multimédia obtém e comprime novo conteúdo, pode haver um aumento temporário no tráfego para a sua origem.
Desative a compressão dinâmica para uma regra de encaminhamento
Para desativar a compressão dinâmica, faça o seguinte:
Consola
Na Google Cloud consola, aceda à página RFC de multimédia.
Para abrir a página Detalhes do serviço para o qual quer configurar a regra de encaminhamento, clique no nome do serviço.
Para mudar para o modo de edição, clique no botão Editar.
Para navegar para a secção Encaminhamento, clique em Seguinte.
Para editar uma regra de anfitrião, clique na seta para a expandir.
Para editar uma regra de encaminhamento, clique em
Editar na linha respetiva.No painel Editar regra de encaminhamento, clique em Configurações avançadas.
Na secção Compressão dinâmica, desmarque a opção Ativar compressão.
Para guardar a regra de encaminhamento, clique em Guardar.
Para guardar as alterações ao serviço, clique em Atualizar serviço.
gcloud e YAML
Exporte a configuração da RFC de conteúdo multimédia para um ficheiro YAML. Use o comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Substitua o seguinte:
SERVICE_NAME
: o nome do seu serviçoFILENAME
: o nome do seu ficheiro YAML
Na definição do trajeto no ficheiro YAML, defina
compressionMode
comoDISABLED
.Para atualizar o serviço, importe a configuração da RFC de multimédia a partir do ficheiro YAML. Use o comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Se tiver problemas com a compressão dinâmica para um trajeto específico, como problemas de compatibilidade com determinados clientes (por exemplo, smart TVs ou dispositivos de streaming), para impedir que a rede CDN de multimédia forneça conteúdo comprimido nesse trajeto, desative a compressão dinâmica.
A desativação da compressão dinâmica para uma rota faz com que a RFC de multimédia deixe de publicar conteúdo comprimido a partir da cache. Todas as respostas comprimidas em cache anteriormente tornam-se inválidas e a RFC obtém versões não comprimidas da sua origem.
Tipos de conteúdo compressíveis
A compressão dinâmica aplica-se 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 comprimidas.
Os tipos de conteúdo comuns e os respetivos tipos MIME incluem o seguinte:
- Conteúdo HTML:
text/html
- Folhas de estilos:
text/css
- JavaScript:
application/javascript
- JSON:
application/json
- Playlists HLS:
application/x-mpegURL
ouapplication/vnd.apple.mpegURL
- Manifestos DASH:
application/dash+xml
A tabela seguinte resume a forma como o tipo MIME afeta a compressibilidade.
Tipos MIME compressí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ões | application/*+json application/*+xml application/*mpegURL text/* |
Os formatos de imagem e vídeo (como image/jpeg
, image/png
e video/mpeg4
) estão quase sempre comprimidos. Assim, a RFC de multimédia na nuvem não os comprime. A recompressão de uma resposta já comprimida raramente reduz o tamanho do ficheiro, e os clientes podem apresentar um comportamento inesperado quando recebem uma resposta deste tipo.
Respostas não comprimíveis
A RFC de multimédia não comprime uma resposta que tenha uma ou mais das seguintes características:
- A resposta não tem um cabeçalho
Content-Type
que corresponda a um tipo de conteúdo comprimível. - A resposta não tem um cabeçalho
Content-Length
. - A resposta tem um cabeçalho
Content-Encoding
. Isto implica que a origem já comprimiu a resposta. Por isso, a RFC de multimédia não pode fazer nenhuma compressão dinâmica adicional. A resposta tem menos de 1 KiB.
O tempo gasto na compressão e descompressão compensa frequentemente quaisquer vantagens. Também existe menos conteúdo para comprimir, o que pode reduzir a eficácia da compressão e originar uma taxa de compressão mais baixa.
A resposta tem mais de 1 MiB.
A RFC 7233 define o intervalo de bytes como um intervalo de bytes específico num recurso. O CDN de multimédia comprime as respostas até ao tamanho permitido para objetos de colocação em cache sem colocação 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 compressão dinâmica não é necessária porque a origem pode comprimir a resposta.
Registo e monitorização
Quando a compressão está ativada, a métrica https/response_bytes_count
existente
em edgecache.googleapis.com/EdgeCacheRouteRule
indica o tamanho da resposta comprimido. Pode esperar uma diminuição no total de bytes de resposta e na taxa de transferência de dados de saída para conteúdo comprimível.
Os registos da RFC de multimédia incluem um campo compressionAlgorithmApplied
no jsonPayload
, que indica se a resposta foi comprimida pelo balanceador de carga, bem como o tipo de compressão.
{ insertId: "1c02hw9g3gjay67" jsonPayload: { @type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry", cacheId: "IAD-862d661f", cacheStatus": "hit,stale", compressionAlgorithmApplied: "br" }, }
Faturação
Quando uma resposta é comprimida pela rede CDN de multimédia, as taxas de transferência de dados de Internet ou de cache de saída relevantes baseiam-se nos bytes comprimidos finais enviados para o cliente.
Se estiver a publicar uma grande quantidade de respostas comprimíveis, isto pode resultar numa redução das taxas de transferência de dados de saída mensais, bem como num aumento do desempenho para os utilizadores finais.