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

Descubre cómo cargar recursos de terceros más rápido puede aumentar los ingresos.

Jonathon Imperiosi
Jonathon Imperiosi

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

0.5%

Aumento de ingresos para los publicadores

2%

Aumento en las cargas de secuencias de comandos de anuncios tempranas

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

Segundo plano

La etiqueta Google Publisher Tag (GPT) es la secuencia de comandos de etiquetado de anuncios de Google Ad Manager que solicita y renderiza anuncios gráficos en la Web. Con la implementación de un encabezado HTTP stale-while-revalidate simple 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 inicio, gpt.js, a la que se le asigna 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 cargado, 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 inactiva 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 encabezado Cache-Control usa el atributo stale-while-revalidate y define un período adicional durante el cual una caché puede usar un recurso inactivo mientras se vuelve a validar de forma asíncrona. Esto ayuda a los desarrolladores a equilibrar la inmediatez (cargar el contenido almacenado en caché de inmediato) y la actualización (garantizar que se usen las actualizaciones del contenido almacenado en caché en el futuro).

Caso de éxito de los 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

Este parámetro de configuración implica 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 entregar la solicitud, aunque esté inactivo. Al mismo tiempo, se realizará una solicitud de nueva validación en segundo plano para propagar la caché con un valor actualizado para su uso futuro.

Chrome lanzó stale-while-revalidate en la versión 75 para el 99% de todo el tráfico, lo que dejó el 1% del tráfico con la función inhabilitada temporalmente para medir su impacto. El equipo de GPT registró las métricas de este 1% (el grupo experimental) y una muestra del 1% del tráfico con la función habilitada (el grupo de control) para probar la eficacia de stale-while-revalidate en 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:

  • Un aumento del 0.3% en las impresiones de anuncios.
  • Un aumento del 0.5% en los ingresos.
  • Un aumento del 2% en las cargas de secuencias de comandos de anuncios tempranas (<500 ms desde el inicio de la carga de la página)
  • Aumento del 1.1% en la carga correcta de secuencias de comandos de anuncios en general.
Porcentaje de cambio en la cantidad de cargas de secuencias de comandos de anuncios en comparación con el tiempo 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 anterior, los resultados de este experimento se pueden atribuir a un aumento en la carga correcta de las secuencias de comandos de anuncios, la mayoría de las cuales se produce al principio del proceso de carga de la página.

Implementa el estado inactivo durante la validación en tu sitio

El equipo de GPT descubrió que hacer un cambio relativamente simple en los encabezados HTTP con stale-while-revalidate puede mejorar la velocidad y aumentar las métricas comerciales. Consulta la publicación Mantén la información actualizada con el estado inactivo durante la validación para obtener más información sobre la implementación de stale-while-revalidate en tu propio sitio.

Foto de Kahica en Unsplash