Comment Google a amélioré les performances des annonces grâce à l'attribut "stale-while-revalidate"

Découvrez comment augmenter vos revenus en chargeant des ressources tierces plus rapidement.

Jonathon Imperiosi
Jonathon Imperiosi

Cette étude de cas montre comment améliorer les performances des ressources tierces peut booster les métriques commerciales. Alors qu'une étude précédente a mesuré le coût de la latence supplémentaire des annonces, celle-ci démontre l'intérêt d'une amélioration des performances réelles :

0,5 %

Augmentation des revenus pour les éditeurs

2 %

Augmentation du nombre de chargements de scripts d'annonces précoces

Source: données internes Google, juin à juillet 2019.

Contexte

Le tag Google Publisher Tag (GPT) est le script d'ajout de tags d'emplacement publicitaire pour Google Ad Manager qui demande et affiche des annonces display sur le Web. En implémentant un en-tête HTTP stale-while-revalidate simple pour GPT, l'équipe GPT a pu améliorer la vitesse et les performances des annonces display Google pour ses éditeurs partenaires. Cette même technique peut être appliquée à tout autre scénario où le chargement des scripts le plus rapidement possible est plus important que le chargement du code le plus récent.

Problème

GPT est déployé en tant que script d'amorçage, gpt.js, qui dispose d'une durée de vie (TTL) courte de 15 minutes. Cette valeur TTL courte permet de mettre à jour ou de revenir rapidement en arrière sur le script. Une fois chargé, gpt.js demande et charge des scripts d'implémentation supplémentaires, dont la valeur TTL est plus longue.

Une fois que la valeur TTL de 15 minutes expire, la version de gpt.js dans le cache devient obsolète et doit être validée à nouveau. Auparavant, ce processus de revalidation nécessitait l'envoi d'une requête réseau synchrone pour récupérer une nouvelle copie du script, ce qui ajoutait de la latence à la première demande d'annonce.

Solution

L'attribut stale-while-revalidate est utilisé par l'en-tête Cache-Control et définit une période supplémentaire pendant laquelle un cache peut utiliser un élément obsolète, tandis que celui-ci est revalidé de manière asynchrone. Cela permet aux développeurs de trouver un équilibre entre l'immédiateté (chargement immédiat du contenu mis en cache) et la fraîcheur (assurer que les mises à jour du contenu mis en cache seront utilisées à l'avenir).

Étude de cas sur les annonces display Google

L'équipe GPT a ajouté cet en-tête Cache-Control dans la réponse HTTP gpt.js en 2016, en prévision de l'implémentation de stale-while-revalidate par les navigateurs :

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

Ce paramètre signifie que si gpt.js est demandé entre 15 et 60 minutes après la valeur mise en cache précédente, la valeur mise en cache sera utilisée pour répondre à la requête, même si elle est obsolète. En même temps, une requête de revalidation est envoyée en arrière-plan pour renseigner le cache avec une valeur actualisée à utiliser ultérieurement.

Chrome a déployé stale-while-revalidate dans la version 75 auprès de 99 % du trafic, laissant 1 % du trafic avec la fonctionnalité temporairement désactivée pour mesurer son impact. L'équipe GPT a enregistré les métriques de ce 1 % (groupe de test) ainsi qu'un échantillon de 1 % du trafic avec la fonctionnalité activée (groupe de contrôle), afin de tester l'efficacité de stale-while-revalidate pour les scripts d'annonces. Au cours de deux semaines, le groupe de contrôle a enregistré des métriques sur un échantillon de 5,2 milliards d'impressions d'annonces display Google.Il a observé les résultats suivants:

  • Augmentation de 0,3% des impressions d'annonces.
  • 0,5 % d'augmentation des revenus.
  • Augmentation de 2 % du nombre de chargements de script d'annonce précoces (<500 ms à partir du début du chargement de la page).
  • Augmentation globale de 1,1% du nombre de chargements de scripts d'annonce réussis
Variation du nombre de chargements de script d&#39;annonce en pourcentage par rapport au temps écoulé entre le début du chargement de la page et le chargement du script d&#39;annonce (ms)
Source: données internes Google, juin à juillet 2019.

Comme indiqué dans le graphique ci-dessus, les résultats de ce test peuvent être attribués à une augmentation des chargements réussis des scripts d'annonces, la majorité d'entre eux se produisant au début du processus de chargement de la page.

Implémenter "stale-while-revalidate" sur votre site

L'équipe GPT a constaté qu'une modification relativement simple des en-têtes HTTP avec stale-while-revalidate pouvait améliorer la vitesse et les métriques métier. Consultez l'article Gérer les données obsolètes avec stale-while-revalidate pour en savoir plus sur l'implémentation de stale-while-revalidate sur votre propre site.

Photo de Kahica sur Unsplash