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

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

0,5%

Incremento de ingresos para los publicadores

El 2%

de aumento en las cargas tempranas de secuencias de comandos del anuncio

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

Información general

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. Mediante 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 publicadores asociados. Esta misma técnica puede aplicarse a cualquier otra situación en la que sea más importante cargar secuencias de comandos lo más rápido posible que cargar el código más reciente.

El problema

GPT se implementa como una secuencia de comandos de arranque, gpt.js, que tiene un breve tiempo de actividad (TTL) de 15 minutos. Este TTL corto permite que la secuencia de comandos se actualice o se revierta con rapidez. 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 de la caché se vuelve obsoleta y se debe volver a validar. 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, el cual define un período adicional durante el cual una caché puede usar un recurso inactivo mientras el recurso 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 actualidad, lo que garantiza 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, antes de que los navegadores implementen 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, este se usará para entregar la solicitud aunque esté inactivo. Al mismo tiempo, se realizará una solicitud de revalidación en segundo plano para propagar la caché con un valor nuevo a fin de usarlo en el futuro.

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

  • 0.3% de aumento en las impresiones de anuncios
  • 0.5% de aumento en los ingresos
  • Aumento del 2% en las cargas tempranas de secuencias de comandos del anuncio (menos de 500 ms desde el inicio de la carga de la página)
  • Aumento general del 1.1% en la carga general de secuencias de comandos del anuncio exitosas
Cambio porcentual en la cantidad de cargas de secuencias de comandos del anuncio en comparación con el tiempo desde el inicio de la carga de la página hasta la carga de la secuencia de comandos del anuncio (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 pueden atribuirse a un aumento en las cargas exitosas de secuencias de comandos del anuncio, y la mayoría ocurre al principio del proceso de carga de la página.

Cómo implementar la función de revalidación inactiva en tu sitio

El equipo de GPT observó que realizar un cambio relativamente sencillo en los encabezados HTTP con stale-while-revalidate puede mejorar la velocidad y las métricas empresariales. Consulta la publicación Cómo mantener la actualización con stale-while-revalidate para obtener más información sobre la implementación de stale-while-revalidate en tu sitio.

Foto de Kahica en Unsplash