Découvrez comment le chargement plus rapide des ressources tierces peut augmenter vos revenus.
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 impliquait d'envoyer 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 composant obsolète pendant sa validation 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 validation sera 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 de 1,1% du nombre de chargements de script d'annonce réussis dans l'ensemble.
Comme indiqué dans le graphique ci-dessus, les résultats de ce test peuvent être attribués à une augmentation des chargements de script d'annonce réussis, la majorité 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 booster les métriques commerciales. Pour en savoir plus sur l'implémentation de stale-while-revalidate
sur votre propre site, consultez l'article Gérer les données à jour avec stale-while-revalidate.