Este estudo de caso destaca como a melhoria da performance de recursos de terceiros pode impulsionar as métricas de negócios. Enquanto um estudo anterior mediu o custo da latência de anúncios adicionada, este estudo demonstra o valor de uma melhoria de performance real:
0,5%
Aumento da receita para publishers
2%
Aumento nos carregamentos de scripts de anúncios iniciais
Fonte: dados internos do Google, de junho a julho de 2019.
Contexto
A Tag de publisher do Google (GPT) é o script de tags de anúncios do Google Ad Manager que solicita e renderiza anúncios de display na Web. Ao implementar um cabeçalho HTTP stale-while-revalidate para a GPT, a equipe dela conseguiu melhorar a velocidade e a performance dos anúncios de display do Google para os parceiros publishers. Essa mesma técnica pode ser aplicada a qualquer outro cenário em que o carregamento de scripts o mais rápido possível seja mais importante do que carregar o código mais recente.
O problema
A GPT é implantada como um script de inicialização, gpt.js, que recebe um tempo de vida (TTL) curto de 15 minutos. Esse TTL curto permite que o script seja atualizado ou revertido rapidamente. Depois de carregado, o gpt.js solicita e carrega outros scripts de implementação, que têm um TTL mais longo.
Quando o TTL de 15 minutos expira, a versão de gpt.js no cache fica obsoleta e precisa ser revalidada. Anteriormente, esse processo de revalidação envolvia fazer uma solicitação de rede síncrona para buscar uma cópia atualizada do script, adicionando latência à primeira solicitação de anúncio.
A solução
O atributo stale-while-revalidate é usado pelo cabeçalho Cache-Control e define uma janela de tempo extra durante a qual um cache pode usar um recurso obsoleto enquanto o recurso é revalidado de forma assíncrona. Isso ajuda os desenvolvedores a equilibrar a imediatidade—carregar o conteúdo armazenado em cache imediatamente—e
a atualização—garantir que as atualizações do conteúdo armazenado em cache sejam usadas no futuro.
Estudo de caso de anúncios de display do Google
A equipe da GPT adicionou esse cabeçalho Cache-Control na resposta HTTP gpt.js em 2016, antecipando a implementação de stale-while-revalidate pelos navegadores:
cache-control: private, max-age=900, stale-while-revalidate=3600
Essa configuração significa que, se gpt.js for solicitado entre 15 e 60 minutos após o valor armazenado em cache anterior, o valor armazenado em cache será usado para atender à solicitação, mesmo que esteja obsoleto. Ao mesmo tempo, uma solicitação de revalidação será feita em segundo plano para preencher o cache com um valor atualizado para uso futuro.
O Chrome lançou stale-while-revalidate na versão 75 para 99% de todo o tráfego, deixando 1% do tráfego com o recurso desativado temporariamente para medir o impacto dele. A equipe da GPT registrou métricas desse 1% (o grupo experimental), bem como uma amostra de 1% do tráfego com o recurso ativado (o grupo de controle), para testar a eficácia de stale-while-revalidate para scripts de anúncios. Ao longo de duas semanas de métricas registradas de uma amostra de 5,2 bilhões de impressões de anúncios de display do Google, o grupo de controle observou:
- Aumento de 0,3% nas impressões de anúncios.
- Aumento de 0,5% na receita.
- Aumento de 2% nos carregamentos de scripts de anúncios iniciais (<500 ms desde o início do carregamento da página).
- Aumento de 1,1% nos carregamentos de scripts de anúncios bem-sucedidos no geral.
Como mostrado no gráfico, os resultados desse experimento podem ser atribuídos a um aumento nos carregamentos de scripts de anúncios bem-sucedidos, com a maioria ocorrendo no início do processo de carregamento de página.
Implementar stale-while-revalidate no seu site
A equipe da GPT percebeu que fazer uma mudança relativamente pequena nos cabeçalhos HTTP com stale-while-revalidate pode melhorar a velocidade e impulsionar as métricas de negócios. Confira o artigo
Mantendo as coisas atualizadas com stale-while-revalidate
para saber mais sobre como implementar stale-while-revalidate no seu site.