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

Découvrez comment le chargement plus rapide de ressources tierces peut augmenter vos revenus.

Jonathon Imperiosi
Jonathon Imperiosi

Cette étude de cas montre comment l'amélioration des performances des ressources tierces peut booster les métriques commerciales. Alors qu'une étude précédente mesurait le coût de la latence accrue des annonces, cette étude démontre la valeur d'une amélioration des performances en situation réelle:

0,5 %

Augmentation des revenus pour les éditeurs

2%

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

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 simple en-tête HTTP stale-while-revalidate pour GPT, l'équipe GPT a pu améliorer la vitesse et les performances des annonces display Google pour ses éditeurs partenaires. La même technique peut être appliquée à tout autre scénario dans lequel 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é sous la forme d'un script d'amorçage, gpt.js, auquel est attribué une courte durée de vie (TTL) de 15 minutes. Cette valeur TTL courte permet de mettre à jour ou d'effectuer un rollback rapide du script. Une fois le chargement terminé, gpt.js demande et charge des scripts d'implémentation supplémentaires, dont la valeur TTL est plus longue.

Une fois la valeur TTL de 15 minutes expirée, la version de gpt.js stockée dans le cache devient obsolète et doit être revalidée. Auparavant, ce processus de revalidation impliquait l'envoi d'une requête réseau synchrone pour extraire 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. Il définit une période supplémentaire pendant laquelle un cache peut utiliser un élément obsolète alors 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 (garantir l'utilisation des mises à jour du contenu mis en cache).

É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'intégration 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, celle-ci sera utilisée pour traiter la requête, même si elle est obsolète. En parallèle, une demande de revalidation est effectuée en arrière-plan pour remplir le cache avec une nouvelle valeur pour une utilisation ultérieure.

Chrome a déployé stale-while-revalidate dans la version 75 à 99% de l'ensemble du trafic. Cette fonctionnalité a été temporairement désactivée pour 1% du trafic afin d'en mesurer l'impact. L'équipe GPT a consigné des métriques de ce 1% (groupe de test) et 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. Sur deux semaines, les métriques enregistrées sur un échantillon de 5,2 milliards d'impressions d'annonces display Google ont été enregistrées par le groupe de contrôle:

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

Comme le montre le graphique ci-dessus, les résultats de ce test peuvent être attribués à une augmentation du nombre de chargements de scripts d'annonce réussis, la majorité étant enregistré au début du processus de chargement des pages.

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

L'équipe GPT a constaté qu'une modification relativement simple des en-têtes HTTP à l'aide de stale-while-revalidate pouvait améliorer la vitesse et booster les métriques commerciales. Pour en savoir plus sur l'implémentation de stale-while-revalidate sur votre site, consultez l'article Maintenir les nouveautés avec stale-while-revalidate.

Photo de Kahica sur Unsplash