Cette étude de cas montre comment l'amélioration des performances des ressources tierces peut avoir un impact positif sur les métriques métier. Alors qu'une étude précédente mesurait le coût de la latence des annonces ajoutées, cette étude démontre la valeur d'une amélioration des performances dans le monde réel :
0,5%
Augmentation des revenus pour les éditeurs
2%
Augmentation des chargements anticipés de scripts d'annonces
Source : données internes Google, juin-juillet 2019.
Arrière-plan
Le 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 stale-while-revalidate en-tête HTTP pour GPT, l'équipe GPT a pu améliorer la vitesse et les performances des annonces display Google pour ses partenaires éditeurs. Cette 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é en tant que script d'amorçage, gpt.js, qui dispose d'une durée de vie (TTL) courte de 15 minutes. Cette courte durée de vie permet de mettre à jour ou d'annuler rapidement le script. Une fois chargé, gpt.js demande et charge des scripts d'implémentation supplémentaires, qui ont une durée de vie plus longue.
Une fois la durée de vie de 15 minutes expirée, la version de gpt.js dans le cache devient obsolète et doit être revalidée. 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 fenêtre de temps supplémentaire pendant laquelle un cache peut utiliser un élément obsolète pendant que l'élément 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 (utilisation future 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'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, cette valeur sera utilisée pour répondre à la requête, même si elle est obsolète. En même temps, une demande de revalidation sera effectuée en arrière-plan pour remplir le cache avec une nouvelle valeur pour une utilisation future.
Chrome a déployé stale-while-revalidate dans la version 75 pour 99 % de l'ensemble du trafic, laissant 1 % du trafic avec la fonctionnalité désactivée temporairement pour mesurer son impact. L'équipe GPT a enregistré des métriques à partir de ce 1 % (le groupe expérimental) ainsi que d'un échantillon de 1 % du trafic avec la fonctionnalité activée (le groupe de contrôle), afin de tester l'efficacité de stale-while-revalidate pour les scripts d'annonces. Au cours de deux semaines de métriques enregistrées à partir d'un échantillon de 5,2 milliards d'impressions d'annonces display Google, le groupe de contrôle a observé les résultats suivants :
- Augmentation de 0,3 % des impressions d'annonces.
- Augmentation de 0,5 % des revenus.
- Augmentation de 2 % des chargements anticipés de scripts d'annonces (moins de 500 ms après le début du chargement de la page).
- Augmentation de 1,1 % du nombre total de chargements réussis de scripts d'annonces.
Comme le montre le graphique, les résultats de cette expérience peuvent être attribués à une augmentation du nombre de chargements réussis de scripts d'annonces, 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 mineure des en-têtes HTTP avec stale-while-revalidate peut améliorer la vitesse et les métriques métier. Pour en savoir plus sur l'implémentation de stale-while-revalidate sur votre propre site, consultez
Maintenir la fraîcheur avec stale-while-revalidate.