Cómo Google mejoró el rendimiento de los anuncios con stale-while-revalidate

Jonathon Imperiosi
Jonathon Imperiosi

En este caso de éxito, se destaca cómo mejorar el rendimiento de los recursos de terceros puede impulsar las métricas empresariales. Si bien en un estudio anterior se midió el costo de la latencia de los anuncios agregados, en este estudio se demuestra el valor de una mejora del rendimiento en el mundo real:

0.5%

Aumento de los ingresos para los publicadores

2%

Aumento en las cargas tempranas de secuencias de comandos de anuncios

Fuente: Datos internos de Google, de junio a julio de 2019.

Fondo

La Etiqueta de editor de Google (GPT) es la secuencia de comandos de etiquetado de anuncios para Google Ad Manager que solicita y renderiza anuncios gráficos en la Web. Al implementar un encabezado HTTP stale-while-revalidate para GPT, el equipo de GPT pudo mejorar la velocidad y el rendimiento de los anuncios gráficos de Google para sus socios publicadores. Esta misma técnica se puede aplicar a cualquier otra situación en la que cargar secuencias de comandos lo más rápido posible sea más importante que cargar el código más reciente.

El problema

GPT se implementa como una secuencia de comandos de bootstrapping, gpt.js, que tiene un tiempo de actividad (TTL) corto de 15 minutos. Este TTL corto permite que la secuencia de comandos se actualice o revierta rápidamente. Una vez cargada, gpt.js solicita y carga secuencias de comandos de implementación adicionales, que tienen un TTL más largo.

Una vez que vence el TTL de 15 minutos, la versión de gpt.js en la caché se vuelve obsoleta y debe volver a validarse. Anteriormente, este proceso de revalidación implicaba realizar una solicitud de red síncrona para recuperar una copia nueva de la secuencia de comandos, lo que agregaba latencia a la primera solicitud de anuncio.

La solución

El atributo stale-while-revalidate lo usa el encabezado Cache-Control y define un período adicional durante el cual una caché puede usar un recurso obsoleto mientras se vuelve a validar de forma asíncrona. Esto ayuda a los desarrolladores a equilibrar la inmediatez (cargar contenido almacenado en caché de inmediato) y la novedad (garantizar que las actualizaciones del contenido almacenado en caché se usen en el futuro).

Caso de éxito de anuncios gráficos de Google

El equipo de GPT agregó este encabezado Cache-Control en la respuesta HTTP gpt.js en 2016, en previsión de que los navegadores implementaran stale-while-revalidate:

cache-control: private, max-age=900, stale-while-revalidate=3600

Esta configuración significa que, si se solicita gpt.js entre 15 y 60 minutos después del valor almacenado en caché anterior, se usará el valor almacenado en caché para satisfacer la solicitud, aunque esté obsoleto. Al mismo tiempo, se realizará una solicitud de revalidación en segundo plano para propagar la caché con un valor nuevo para su uso futuro.

Chrome lanzó stale-while-revalidate en la versión 75 al 99% de todo el tráfico, dejando el 1% del tráfico con la función inhabilitada temporalmente para medir su impacto. El equipo de GPT registró métricas de este 1% (el grupo experimental), así como una muestra del 1% del tráfico con la función habilitada (el grupo de control), para probar la eficacia de stale-while-revalidate para las secuencias de comandos de anuncios. Durante 2 semanas de métricas registradas a partir de un tamaño de muestra de 5,200 millones de impresiones de anuncios gráficos de Google, el grupo de control observó lo siguiente:

  • Aumento del 0.3% en las impresiones de anuncios
  • Aumento del 0.5% en los ingresos
  • Aumento del 2% en las cargas tempranas de secuencias de comandos de anuncios (<500 ms desde el inicio de la carga de la página)
  • Aumento del 1.1% en las cargas exitosas de secuencias de comandos de anuncios en general
Cambio en puntos porcentuales en la cantidad de cargas de secuencias de comandos de anuncios en comparación con el tiempo transcurrido desde el inicio de la carga de la página hasta la carga de la secuencia de comandos de anuncios (ms)
Fuente: Datos internos de Google, de junio a julio de 2019.

Como se muestra en el gráfico, los resultados de este experimento se pueden atribuir a un aumento en las cargas exitosas de secuencias de comandos de anuncios, y la mayoría se produce al principio del proceso de carga de la página.

Implementa stale-while-revalidate en tu sitio

El equipo de GPT observó que realizar un cambio relativamente pequeño en los encabezados HTTP con stale-while-revalidate puede mejorar la velocidad y aumentar las métricas empresariales. Consulta Mantén la información actualizada con stale-while-revalidate para obtener más información sobre la implementación de stale-while-revalidate en tu propio sitio.