Découvrez comment la plate-forme de gestion du consentement de PubTech a réduit l'INP sur les sites Web de ses clients jusqu'à 64%, tout en améliorant la visibilité des annonces de 1,5 %.

Découvrez comment la CMP PubConsent a réduit l'INP de ses clients jusqu'à 64% grâce à une stratégie de rendement qui utilise les API Scheduler du navigateur pour corriger les problèmes de réactivité identifiés à l'aide des outils pour les développeurs Chrome.

Marco Prontera
Marco Prontera
Gilberto Cocchi
Gilberto Cocchi

Les plates-formes de gestion du consentement (CMP) sont des outils qui aident les sites Web à respecter les réglementations sur la confidentialité en obtenant le consentement des utilisateurs concernant l'utilisation des cookies et des technologies de suivi. Outre l'objectif principal d'assurer la conformité légale, les CMP, en tant que scripts tiers, doivent également garantir un impact minimal sur les performances et l'expérience utilisateur.

La CMP PubConsent est le dernier produit de PubTech. Conçue principalement pour les performances, la CMP PubConsent est conçue pour être légère, garantir une expérience utilisateur optimale et minimiser l'impact sur les performances globales du site Web.

L'introduction de la métrique Interaction to Next Paint (INP) a permis à PubTech d'identifier les problèmes de réactivité de notre CMP. Dans cette étude de cas, PubTech montre comment elle a résolu ses problèmes de réactivité sur sa plate-forme CMP PubConsent et comment elle a amélioré INP avant qu'il ne devienne l'un des Core Web Vitals en mars 2024, démontrant ainsi son engagement indéfectible à fournir les meilleures performances possibles pour un produit de CMP.

Pourquoi PubTech se soucie-t-il des performances ?

La CMP PubConsent, comme la plupart des CMP, propose sa fonctionnalité de gestion du consentement implémentée en tant que script tiers sur les pages de votre site. Il est essentiel de limiter l'impact sur les performances de notre offre de CMP, y compris sur la réactivité, pour garantir une intégration réussie des CMP.

En priorisant les performances et en allégeant le script de la CMP PubConsent, les propriétaires de sites Web peuvent trouver un équilibre délicat entre intégrer des fonctionnalités utiles de gestion du consentement tout en préservant la qualité de l'expérience utilisateur.

<ph type="x-smartling-placeholder">

Compte tenu de l'importance des fonctionnalités d'une CMP et de l'impact qu'elles peuvent avoir sur les performances, PubTech a défini les objectifs suivants:

  1. Réduisez l'impact du produit de la CMP PubConsent sur l'INP.
  2. Réduisez les longues tâches attribuables au produit de la CMP.
  3. Réduisez le temps de blocage total (TBT), qui peut avoir un effet négatif sur l'INP d'une page.

Comment l'INP a-t-elle été mesurée ?

PubTech a utilisé les outils pour les développeurs Chrome pour effectuer une analyse initiale et diagnostique manuellement les interactions lentes. Ce workflow a permis à PubTech d'identifier les problèmes spécifiques affectant la réactivité de la page. Par exemple, une interaction avec un clic dans le produit de la CMP pour accepter tous les cookies, puis ignorer la boîte de dialogue de recueil du consentement pour les cookies a entraîné une longue tâche qui a retardé la mise à jour de l'affichage dans l'interface utilisateur. Comme vous pouvez le voir sur l'image suivante, l'interface utilisateur n'a pas été mise à jour pour indiquer que la boîte de dialogue avait été fermée avant la fin de la longue tâche.

Tout comme le bouton permettant d'accepter tous les cookies, celui permettant de refuser tous les cookies ou de personnaliser les préférences de cookies suit tous le même workflow dans l'architecture de la CMP PubConsent. Pour cette raison, les améliorations détaillées dans cette étude de cas ont eu une incidence sur une série d'interactions utilisateur dans le produit de la CMP.

<ph type="x-smartling-placeholder">
</ph> Flux indiquant la durée pendant laquelle une tâche empêche la mise à jour de l&#39;interface utilisateur après que l&#39;utilisateur a cliqué sur &quot;Tout accepter&quot; dans la CMP PubConsent. Une seule longue tâche comporte cinq étapes, ce qui ralentit l&#39;interface utilisateur. <ph type="x-smartling-placeholder">
</ph> Représentation visuelle de ce qui se passe lorsque les utilisateurs cliquent sur le bouton « Tout accepter » .

Ce délai a donné l'impression visuelle que le panneau était verrouillé pendant la tâche. Comme elle a bloqué la mise à jour de l'affichage pendant une période potentiellement longue, l'INP de la page a été affecté négativement.

<ph type="x-smartling-placeholder">

Pour améliorer l'INP, différentes stratégies de rendement ont été adoptées dans la CMP PubConsent.

Rendement des tâches à priorité élevée

La méthode yieldToMainUiBlocking présentée dans l'extrait de code suivant est conçue pour optimiser les tâches JavaScript à priorité élevée en générant avec scheduler.yield si disponible, mais en revenant à postTask avec une priorité user-blocking (élevée) si postTask est disponible, puis en retombant à rien.

setTimeout a été évité ici, car la méthode yieldToMainUiBlocking est conçue pour gérer les opérations de paramètres internes de la CMP et les tâches à priorité élevée qui doivent conserver cette priorité tout en générant un rendement. Cela signifie que seuls les navigateurs qui implémentent ces API de planification, qui ne sont actuellement disponibles que dans les navigateurs basés sur Chromium au moment de la rédaction de cet article, bénéficient des améliorations détaillées dans cette étude de cas. Malgré tout, cette approche a été considérée comme une amélioration progressive acceptable pour ces tâches à priorité élevée.

function yieldToMainUiBlocking () {
  return new Promise((resolve) => {
    if ('scheduler' in window) {
      if ('yield' in window.scheduler) {
        return window.scheduler.yield().then(() => resolve(true));
      }

      if ('postTask' in window.scheduler) {
        return window.scheduler.postTask(() => resolve(true), { priority: 'user-blocking' });
      }
    }

    resolve(false);
  });
};

Exploitez les tâches moyennes et en arrière-plan

La méthode yieldToMainBackground présentée dans l'extrait de code suivant permet de décomposer les longues tâches ayant une priorité user-visible (moyenne) ou background. La logique implémente scheduler.yield() s'il est disponible, mais il diffère selon l'utilisation de postTask avec une priorité moyenne, puis le retour à setTimeout dans les navigateurs autres que Chromium.

function yieldToMainBackground () {
  return new Promise((resolve) => {
    if ('scheduler' in window) {
      if ('yield' in window.scheduler) {
        return window.scheduler.yield().then(() => resolve(true));
      }

      if ('postTask' in window.scheduler) {
        return window.scheduler.postTask(() => resolve(true), { priority: 'user-visible' });
      }
    }

    setTimeout(() => { resolve(true) }, 0);
  });
};
<ph type="x-smartling-placeholder">
</ph> Flux indiquant la durée de la tâche qui a empêché la mise à jour de l&#39;interface utilisateur après que l&#39;utilisateur a cliqué sur &quot;Tout accepter&quot; dans la CMP PubConsent a été optimisée. Les cinq étapes sont désormais appliquées lorsque cela est possible, ce qui permet à l&#39;interface utilisateur de mettre à jour son affichage plus rapidement. <ph type="x-smartling-placeholder">
</ph> Représentation visuelle de la façon dont le rendement à l'aide de yieldToMainBackground permet au navigateur d'afficher plus tôt le rendu suivant (fermeture de l'interface utilisateur de la CMP dans ce cas).

Comment PubTech a-t-il encore amélioré le TLN grâce à l'optimisation de la mise en page du rendu ?

Après avoir appliqué la stratégie de rendement, l'INP s'est considérablement améliorée pour la CMP. En fait, après avoir considérablement réduit la durée de traitement du gestionnaire d'événements, nous avons découvert qu'il était possible d'apporter d'autres améliorations au rendu du prochain paint pour l'action Close UI (Fermer l'interface utilisateur). À l'origine, cette action a été conçue pour supprimer des éléments du DOM. Cela posait des difficultés, en particulier sur les sites Web comportant un nombre important de nœuds DOM, entraînant une augmentation inattendue du travail d'affichage.

Capture d&#39;écran du panneau &quot;Performance&quot; dans les outils pour les développeurs Chrome, montrant une section d&#39;une trace avec une pile d&#39;activité d&#39;appel pour fermer une boîte de dialogue d&#39;UI dans la CMP PubConsent. La tâche de fermeture de la boîte de dialogue de l&#39;interface utilisateur déclenche elle-même la suppression des nœuds DOM, ce qui augmente le délai de présentation de l&#39;interaction.

Pour faire face à l'augmentation des tâches de rendu nécessaires pour supprimer des éléments du DOM, l'équipe a introduit une solution appelée "dérendu différé". Cette approche applique d'abord une règle CSS display: none à la boîte de dialogue de recueil du consentement de la CMP une fois que l'utilisateur a accepté de la masquer. Ensuite, la suppression des nœuds DOM associés à la boîte de dialogue de la CMP sera décalée à un moment ultérieur (lorsque le navigateur sera inactif) à l'aide de requestIdleCallback. Cette approche s'est avérée beaucoup plus rapide que la suppression des nœuds DOM au moment où l'utilisateur ferme la boîte de dialogue de recueil du consentement.

<ph type="x-smartling-placeholder">
</ph> Capture d&#39;écran du panneau &quot;Performances&quot; dans les outils pour les développeurs Chrome, qui montre la même trace qu&#39;auparavant, mais optimisée. Lorsque la boîte de dialogue de la CMP PubConsent est fermée, l&#39;action initiale consiste à la masquer à l&#39;aide de la règle CSS &quot;display: none&quot;. Ensuite, lorsque le navigateur sera inactif, la suppression du nœud DOM est effectuée. <ph type="x-smartling-placeholder">
</ph> Capture d'écran des outils de développement montrant l'amélioration de l'INP après le transfert de la tâche de suppression du DOM.

Comment PubTech a réduit davantage son INP en améliorant la bibliothèque TCF de l'IAB

Après avoir résolu la plupart des problèmes de réactivité de la CMP, d'autres possibilités d'amélioration ont été identifiées dans l'une de ses principales dépendances: la bibliothèque du Transparency and Consent Framework (TCF) de l'IAB.

Les composants les plus coûteux en calcul de cette bibliothèque étaient des "build string" (chaînes de compilation) et "consentement pour l'envoi". Ces composants font partie intégrante de la bibliothèque TCF de l'IAB. Les optimisations suivantes apportées à ces composants ont été appliquées dans une section distincte spécialement pour les besoins de PubTech:

  1. Réutilisation des résultats calculés pour le processus de décodage, qui est exécuté pour chaque rappel tiers devant lire le consentement de l'utilisateur.
  2. Évitez et réduit les boucles inutiles dans le processus d'encodage des restrictions applicables aux éditeurs, qui s'exécute lorsque l'utilisateur donne son consentement.
<ph type="x-smartling-placeholder">

La première de ces optimisations a réduit le temps passé par la CMP sur chaque rappel tiers qui s'ancre dans la bibliothèque TCF de l'IAB. La deuxième optimisation a permis de réduire la durée de traitement engendrée par les "chaînes de compilation" . D'ailleurs, cette optimisation a permis de réduire jusqu'à 60% des boucles exécutées chaque fois qu'un utilisateur a donné son consentement.

Résultats

Grâce aux stratégies auparavant efficaces et aux nouvelles optimisations de la mise en page de rendu, l'INP de la CMP a augmenté de 65%. Cela a permis d'améliorer considérablement la réactivité de l'expérience utilisateur de la CMP PubConsent.Pour certaines annonces, la visibilité a même augmenté de 1,5% en optimisant le moment où les annonces sont demandées.

En plus de ces améliorations, dans la bibliothèque TCF de l'IAB, il a été observé que l'INP a augmenté de 77% sur mobile pour les clients concernés, en réduisant de 85 % les longues tâches induites par le TCF. Cela a permis de réduire considérablement les frais généraux liés à chaque rappel tiers exécuté pendant l'ensemble du cycle de vie d'une page.

Le nombre d'origines ayant réussi l'INP lors de l'utilisation de la CMP PubConsent a augmenté de plus de 400%, passant de 13% à 55% sur mobile. Pour certains clients, l'INP de la page a été réduit de plus de moitié (de 470 à 230 millisecondes) en raison des optimisations apportées au SDK PubTech.

<ph type="x-smartling-placeholder">
</ph> Capture d&#39;écran des taux de réussite INP d&#39;origine pour les sites utilisant la CMP PubTech. Sur ordinateur, le taux de réussite passe d&#39;environ 84% à 99,12%. Sur mobile, le taux de réussite passe d&#39;environ 22% à 55,46%. <ph type="x-smartling-placeholder">
</ph> Taux de réussite de l'INP d'origine pour les sites utilisant la CMP PubTech, tel qu'indiqué par l'archive HTTP et le rapport d'expérience utilisateur Chrome (CrUX).
<ph type="x-smartling-placeholder">
</ph> Capture d&#39;écran d&#39;un tableau de bord montrant l&#39;INP à partir des données RUM au 75e centile. À partir de juillet et août 2023, l&#39;INP était juste en dessous de 500 millisecondes, mais à la mi-février 2024, elle était juste en dessous de 200 millisecondes, ce qui la place dans la catégorie &quot;Bon&quot;. de sortie. <ph type="x-smartling-placeholder">
</ph> Tendance d'amélioration des données INP des clients mobiles du client PubConsent, en corrélation avec les modifications apportées au SDK décrites dans cette étude de cas.

Conclusion

Les clients de PubTech ont rapidement compris que nos efforts d'optimisation ont permis d'améliorer les performances INP et les métriques commerciales. Nous envisageons donc d'améliorer les performances de la CMP PubConsent et d'exploiter les données RUM (Real User Monitoring) inestimables de leurs clients. Ces données suivent de près les régressions et les progrès, ce qui stimule les efforts d'amélioration continue de PubTech.

En tant que tiers, PubTech a également compris qu'elle pouvait améliorer les performances Web à grande échelle et la réactivité, tout en évitant les impacts négatifs sur les KPI de l'entreprise. Il n'est jamais trop tard pour commencer à mettre en œuvre ce type d'améliorations.

Nous remercions tout particulièrement Luca Coppola, CTO de PubTech pour avoir soutenu ce travail d'innovation, ainsi que Jeremy Wagner, Michal Mocny et Rick Viscomi de Google.