Proxy de pré-busca particular no Chrome

Katie Hempenius
Katie Hempenius
Kenji Baheux
Kenji Baheux
Michael Buettner
Michael Buettner

Aceleração da Largest Contentful Paint (LCP) com a pré-busca entre sites.

A partir do Chrome 103 para Android, o Chrome vai lançar gradualmente um recurso de proxy de pré-busca particular para acelerar as navegações na Pesquisa Google e em outros sites participantes em 30% na média. Esse recurso de proxy de pré-busca particular permite a pré-busca de conteúdo de origem cruzada sem expor as informações do usuário ao site de destino até que o usuário navegue.

Continue lendo para saber mais sobre como esse recurso funciona e como ele pode ajudar a melhorar significativamente os sites Largest Contentful Paint (LCP), ou como os sites referenciadores podem ajudar os usuários a atingir as metas acelerando a navegação entre sites.

Como funciona o proxy de pré-busca particular

Canal de comunicação seguro

Esse recurso usa um proxy CONNECT para estabelecer um canal de comunicação seguro entre o Chrome e o servidor que hospeda o conteúdo a ser pré-buscado. Esse canal de comunicação seguro impede que o proxy inspecione qualquer transferência de dados. É importante ressaltar que, embora o proxy de pré-busca particular veja necessariamente o nome do host para estabelecer um canal de comunicação seguro, ele não vê os URLs completos nem os próprios recursos.

Animação mostrando o fluxo de dados pelo proxy.
A pré-busca de sites por um proxy CONNECT evita o vazamento de informações do usuário.

Além disso, como o canal de comunicação seguro é criptografado de ponta a ponta, os intermediários não podem observar os nomes de host nem o conteúdo dos sites pré-buscados. Por fim, o proxy impede inerentemente que o servidor de destino veja o endereço IP do usuário.

Como impedir a identificação do usuário

Além dos aspectos de rede detalhados anteriormente, também precisamos impedir que os servidores identifiquem um usuário no momento da pré-busca por informações armazenadas anteriormente no dispositivo. Para isso, o Chrome atualmente restringe o uso do proxy de pré-busca particular a sites em que o usuário não tem cookies ou outro estado local. Estas são as restrições para solicitações de pré-busca feitas pelo proxy de pré-busca particular:

  • Cookies:solicitações de pré-busca não podem transportar cookies.
    • Se houver um cookie para um recurso, o Chrome fará uma busca sem credenciais, mas não usará a resposta. Consulte a seção Armazenamento em cache mais adiante.
    • Embora as respostas a uma solicitação de pré-busca possam incluir cookies, esses cookies só serão salvos se o usuário navegar para a página pré-buscada.
  • Impressão digital:outras plataformas que podem ser usadas para esse recurso também são ajustadas. Por exemplo, o cabeçalho User-Agent enviado pelo proxy de pré-busca carrega apenas informações limitadas.

No futuro, esperamos expandir o proxy de pré-busca particular para links com cookies ou estado local, mantendo as mesmas características de privacidade. Consulte a seção Próximas etapas para mais detalhes.

Armazenamento em cache

O Chrome pré-busca recursos mesmo que já estejam no cache, mas eles não carregam cabeçalhos condicionais, como ETag ou If-Modified-Since. Eles contêm valores definidos pelo servidor que podem ser usados para rastreamento mesmo sem cookies. Essa pré-busca é feita para evitar o vazamento do estado do cache de um cliente para o site pré-buscado. Além disso, o Chrome só confirmará um recurso pré-buscado no cache se o usuário decidir navegar para o site.

Primeiros passos com o proxy de pré-busca particular

Para proprietários de sites

Os proprietários de sites não precisam fazer nada para começar a usar o proxy de pré-busca particular em links que não têm cookies nem o estado local do usuário. Com base nos nossos experimentos, essa é uma oportunidade significativa para a maioria dos sites. Além disso, é sempre uma boa ideia impressionar visitantes novos ou visitantes não frequentes com uma experiência de carregamento super-rápido. Em experimentos anteriores, notamos um aumento de 20% a 30% na velocidade da Largest Contentful Paint em navegações pré-buscadas.

No futuro, esperamos expandir esse recurso para links com cookies ou estado local, mantendo as características de privacidade. O desafio dos cookies é que eles podem ser usados para alterar a experiência do usuário de maneiras difíceis de prever. Por isso, os proprietários provavelmente vão precisar ativar ou ajustar o site para aproveitar o proxy de pré-busca particular em links com cookies.

Concretamente, embora as solicitações de pré-busca permaneçam sem credenciais, a página da Web terá acesso a cookies e outros estados locais quando o usuário navegar até ela. Os desenvolvedores podem aproveitar isso para adicionar novamente a personalização e as mudanças com base nos cookies ou no estado local. Ou talvez os desenvolvedores também estejam interessados em declarar certos recursos como perfeitamente adequados para pré-busca e uso no estado em que se encontram, sem cookies (ou seja, recursos que não dependem de cookies). Confira a seção Próximas etapas para saber mais e melhorar nosso plano.

Conteúdo ou serviços que dependem de uma região geográfica

Caso seu site se comporte de maneira diferente (por exemplo, conteúdo diferente ou acesso seletivo) em vários mercados com base no endereço IP do usuário, talvez você se pergunte como lidar com as solicitações de pré-busca do proxy de pré-busca particular. É importante saber que o proxy de pré-busca particular é alimentado por vários servidores espalhados por todo o mundo e que o IP do proxy será geolocalizado para o país do qual o usuário iniciou a pré-busca.

Com isso em mente, recomendamos o seguinte:

  1. Identifique as solicitações de pré-busca do proxy de pré-busca particular pela presença de um cabeçalho HTTP Sec-Purpose: Prefetch; anonymous-client-ip.
  2. Pesquise a geolocalização do proxy de pré-busca particular que emitiu a solicitação pelo endereço IP. Acesse este recurso para conferir uma lista atualizada de regiões geográficas implantadas e os endereços IP correspondentes.
  3. Disponibilizar recursos de acordo com o mercado associado a essa geolocalização específica.

Controle de tráfego

Em experimentos anteriores, sabemos que esse recurso normalmente resulta em menos de 2% de solicitações extras para os recursos principais (por exemplo, documentos HTML). Dito isso, se você for cauteloso, poderá usar o campo de fração da recomendação de tráfego para controlar a quantidade de tráfego que o proxy de pré-busca particular deve permitir. É possível começar com uma fração pequena, como 0,3 (ou seja, 30%), e aumentá-la gradualmente até 1,0 (ou seja, 100%) adicionando o JSON a seguir a um arquivo /.well-known/traffic-advice, que precisa ser exibido com o tipo MIME application/trafficadvice+json:

[{
  "user_agent": "prefetch-proxy",
  "fraction": 0.3
}]

O campo fraction é um ponto flutuante entre 0,0 (sem pré-busca) e 1,0 (100% das solicitações de pré-busca passam).

Também é possível desativar esse recurso completamente com a seguinte configuração:

[{
  "user_agent": "prefetch-proxy",
  "disallow": true
}]

O arquivo /.well-known/traffic-advice é buscado pelo proxy, não pelo cliente, e armazenado em cache no proxy de acordo com a semântica normal de cache HTTP. Para ter mais flexibilidade, por exemplo, um pico repentino de acesso pesado, rejeite temporariamente as solicitações de pré-busca (Sec-Purpose: prefetch;anonymous-client-ip) com um código de status 503 e defina o cabeçalho Cache-Control: no-store na resposta. Também é possível adicionar o cabeçalho Retry-After para informar ao Chrome quanto tempo esperar antes de tentar novamente as solicitações de pré-busca.

Para proprietários de sites referenciadores

Se você opera um site com muitos links para outros sites, pode se interessar em usar o recurso de proxy de pré-busca particular para acelerar essas navegações de origem cruzada. Adicione regras de especulação às suas páginas para o Chrome saber qual página você acredita que deve ser pré-buscada usando o proxy de pré-busca particular. Aqui está um exemplo simples:

<script type="speculationrules">
{
  "prefetch": [
    "source": "list",
    "urls": ["https://example.com/index.html"],
    "requires": ["anonymous-client-ip-when-cross-origin"]
  ]
}
</script>

A seguir

Este lançamento é apenas o primeiro passo. Esperamos expandir e melhorar esse recurso com base no interesse e no feedback da comunidade. Por exemplo, gostaríamos de receber feedback sobre como expandir para links com cookies e estado local de uma forma que minimize o atrito do desenvolvedor ou sobre formas de tornar esse recurso mais útil para sites de referenciadores.

Leia mais