Publicado em: 14 de maio de 2025
O transporte de dicionário de compactação é um novo padrão que permite compactar conteúdo repetido em solicitações. Ele foi lançado no Chrome 130 no final de 2024. A Pesquisa Google adotou essa nova tecnologia e teve grandes melhorias.
A oportunidade
Há muita duplicação nas páginas da Web que visitamos. Muitas páginas no mesmo site consistem em grandes partes do mesmo código, seja HTML, CSS ou JavaScript, com apenas o conteúdo entre todos esses códigos mudando. Embora cada resultado seja uma combinação única de centenas de recursos que resultam em conteúdo totalmente exclusivo, ainda há muitas semelhanças no código enviado ao navegador para produzi-los.
Visualmente, a maioria das páginas de resultados da pesquisa é semelhante, não importa o termo de pesquisa inserido: na parte de cima, temos o logotipo do Google, a barra de pesquisa e alguns controles. No meio, temos algumas guias para o tipo de pesquisa e uma lista de resultados à esquerda, intercalada por vários widgets para ajudar o usuário, e mais contexto à direita com painéis "sobre":

Por fim, na parte de baixo, temos as opções de paginação e o rodapé padrão. Isso é apenas o que está disponível visualmente. Por trás das cortinas, há muito código (HTML, CSS e JavaScript) para produzir essa página. Grande parte desse código é inline diretamente no HTML da página como uma otimização de desempenho. Embora isso permita um carregamento mais rápido da página, o custo é não compartilhar esse código entre diferentes páginas de resultados, como um recurso armazenado em cache externamente.
Compactação na Web
A compactação é uma tecnologia muito usada na Web. A compactação de recursos com gzip ou algoritmos mais recentes, como Brotli ou Zstandard, permite evitar a repetição em um arquivo com compactação sem perdas para empacotar todas as informações o mais próximo possível no servidor antes do envio. O navegador pode descompactar os bytes compactados para restaurar o conteúdo original. Para imagens, a compactação com perdas oferece benefícios semelhantes, removendo bytes extras que podem não ser perceptivelmente diferentes para os usuários.
Até pouco tempo atrás, a compactação na Web era limitada aos recursos. Não era possível compactar em diferentes recursos e, com certeza, não em diferentes páginas. Isso é reconhecido há muito tempo como uma limitação que os engenheiros da Web tentam corrigir.
Transporte do dicionário de compactação ao resgate!
O transporte de dicionário de compactação é um novo padrão que permite a compactação entre recursos com o uso de "dicionários" compartilhados que permitem que séries comuns de bytes sejam substituídas por referências desse dicionário compartilhado.
Algoritmos de compactação modernos, como Brotli e Zstandard, oferecem suporte ao uso de dicionários de termos comuns que permitem uma maior compactação substituindo esses termos por uma referência menor ao dicionário. O Brotli vem com um dicionário integrado de termos da Web comuns. O Transporte de dicionário de compactação se baseia nisso, oferecendo maneiras de o servidor e o navegador compartilharem dicionários personalizados.
Os dicionários personalizados podem ser um recurso que já é usado no site. Por exemplo, você pode usar app.v1.js
como um dicionário ao fazer o download de app.v2.js
para basicamente fazer o download apenas da diferença (conhecida como "compactação delta"). Como alternativa, um recurso de dicionário separado pode ser especificado com uma tag <link rel="compression-dictionary">
(ou cabeçalho HTTP Link
equivalente).
Isso pode reduzir drasticamente o tamanho de download de recursos com muito conteúdo ou código compartilhado, como as páginas de resultados da pesquisa mencionadas anteriormente.
Uso de dicionários de compactação pela Pesquisa Google
A equipe da Pesquisa Google está sempre buscando melhorar a performance da Pesquisa. Eles foram os primeiros a adotar dicionários de compactação, porque perceberam o potencial dessa tecnologia.
A Pesquisa usa a compactação Brotli compartilhada para as páginas de resultados com um arquivo de dicionário separado criado com base em uma amostra representativa dos resultados da pesquisa. Um pipeline automatizado robusto garante que o dicionário permaneça atualizado, acompanhando o conteúdo do SRP que muda com frequência e é lançado várias vezes por dia. Você pode usar o DevTools para saber exatamente como isso funciona.
Quando um cliente carrega uma página de resultados de pesquisa pela primeira vez, o servidor fornece um link para o dicionário usando o cabeçalho HTTP Link:
com um tipo de rel=compression-dictionary
:

Link
na guia "Rede"Se o cliente oferece suporte à compactação de dicionário Brotli, mas ainda não armazenou em cache o dicionário compartilhado, o navegador faz o download dele durante o tempo de inatividade. A resposta do dicionário inclui o cabeçalho de resposta Use-As-Dictionary
, que informa ao navegador para quais recursos o dicionário pode ser usado:

Use-As-Dictionary
na guia "Rede"O dicionário vai usar a semântica padrão de cache-control
e vai estar disponível para todos os recursos que correspondem às regras definidas nesse cabeçalho. Neste exemplo, as páginas começam com /search
.
Para futuros carregamentos de páginas de resultados de pesquisa, o navegador pode informar ao servidor que tem um dicionário usando o cabeçalho de solicitação HTTP Available-Dictionary
. A atualização da página mostra isso em ação:

Available-Dictionary
na guia "Rede"Com a caixa de seleção Preserve log ativada e filtrada, podemos comparar as duas respostas:

Neste exemplo, a primeira solicitação é a resposta completa de 107 KB e usa a compactação Brotli (br
), enquanto a segunda solicitação de recarga tem quase metade do tamanho, com 60 KB, e usa a compactação Brotli com dicionário (dcb
), resultando em um tempo de download mais rápido.
No Chrome, você pode acessar a página chrome://net-internals/#sharedDictionary
para conferir os dicionários compartilhados e limpar o conteúdo deles se quiser repetir este exemplo do início.

#sharedDictionary
do Net-InternalsOs resultados
A mudança foi lançada para os usuários da Pesquisa na primavera de 2025, inicialmente para os usuários do Chrome. Isso reduziu o tamanho médio do payload de HTML em todos os usuários do Chrome em 23% em comparação com a compactação Brotli padrão. Essa média geral inclui resultados não compactados (por exemplo, usuários iniciantes sem um dicionário) e resultados compactados. Para resultados compactados por dicionário, a economia é ainda maior, como vimos com a melhoria de quase 50% no exemplo anterior.
Isso resultou em uma melhoria de 1, 7% na Largest Contentful Paint (LCP) no geral e de até 9% em redes de alta latência. Isso pode parecer pouco, mas a Pesquisa Google é um site hiperotimizado, então ganhos dessa magnitude são enormes. Outros sites podem ter melhorias ainda maiores com essa tecnologia.
Teste no seu site.
O transporte de dicionário de compactação já está pronto para uso em todos os navegadores baseados no Chromium (Chrome, Edge, Opera e assim por diante). É um aprimoramento progressivo que será ignorado por navegadores sem suporte, mas, à medida que mais navegadores oferecerem suporte, eles também poderão se beneficiar.
Os desafios que essa tecnologia aborda estão longe de serem específicos da Pesquisa Google. Muitos sites podem se beneficiar do transporte de dicionário de compactação, seja com um dicionário separado, como a Pesquisa usada, ou usando um recurso existente como o dicionário (como a versão anterior de um app ao lançar uma nova versão).
Confira o guia no MDN para mais detalhes sobre como essa tecnologia funciona e como implementá-la no seu site.
Isso requer alguma configuração no servidor ou no processo de build para criar recursos compactados com base em dicionário e servi-los de maneira adequada, mas os resultados podem ser muito impressionantes em termos de desempenho.