Passer au contenu principal

Flux d’exécution du moteur

Apprenez comment le moteur d’expérimentation charge, suit et exécute les expériences.

Vue d’ensemble du moteur d’expérimentation

Kameleoon offre une solution d’optimisation à plateforme unique pour l’expérimentation des applications web et full-stack. La plateforme prend en charge deux solutions principales :
  • Web Experimentation : Effectuez des A/B tests et d’autres formes d’expérimentation pour les sites web et applications web.
  • Feature Experimentation : Activez le feature flagging full-stack et l’expérimentation. Kameleoon fournit également des API et outils supplémentaires pour éliminer le clignotement dans les expériences A/B, intégrer vos outils existants et automatiser les tâches.

Flux de code : chargement

Le moteur Kameleoon exécute le tag engine.js (précédemment kameleoon.js). Invoquez ce tag JavaScript via le code source HTML des pages de votre application. Au point d’entrée, le moteur :
  1. Activation : Le tag engine.js invoque un appel à l’API d’activation via Kameleoon.Analyst.load().
  2. Exécution de la file de commandes : Après le chargement, le moteur vérifie le tableau kameleoonQueue et exécute les commandes dans l’ordre où vous les avez ajoutées. Utilisez ceci pour le code qui doit s’exécuter avant que Kameleoon n’instancie les fonctions.
Kameleoon n’exécute que les fonctions ajoutées à la file avec le paramètre IMMEDIATE.
  1. Anti-flicker et variables globales : Le clignotement se produit lorsque la page d’origine s’affiche brièvement avant l’apparition de la variation. Cet effet peut conduire à des résultats inexacts. Kameleoon utilise des techniques avancées pour éliminer le clignotement. Si vous configurez l’anti-flicker, le système charge le script Kameleoon de manière asynchrone avec le code anti-flicker.
Une fois que Kameleoon a fini de se charger, la variable window.KameleoonEndLoadTime stocke l’horodatage de fin.
Ajustez le timeout à l’aide de la variable kameleoonLoadingTimeout dans le snippet d’installation. Nous recommandons de conserver la valeur par défaut de 1000 millisecondes (ou 750 millisecondes pour les implémentations modernes). Cette variable détermine le temps maximal pendant lequel le tag d’installation peut retarder l’affichage de la page en attendant le fichier d’application.
  1. Vérification des motifs de blocage : Avant de terminer l’initialisation, le moteur vérifie ces motifs de blocage :
    • Storage : Si le stockage local ou de session est indisponible, le moteur s’arrête et renvoie l’événement Kameleoon::Aborted avec le code STORAGE.
    • Timeout : Si engine.js met plus de 750 ms à charger et que vous avez configuré le projet pour désactiver Kameleoon pour la page ou la visite, le moteur renvoie TIMEOUT.
    • Prerender : Kameleoon exige que le document soit prêt (document.visibilityState == "prerender"). Si ce n’est pas le cas, le script s’arrête et renvoie PRERENDER. Il recharge lorsque l’état de visibilité change.
    • Custom script : Si un script personnalisé annule la session, le moteur renvoie SCRIPT.
    • Parameter : Si l’URL contient KameleoonDisabled == true, le moteur renvoie PARAMETER et s’arrête.
    • Disabled : Si vous désactivez le projet dans le dashboard, le moteur renvoie DISABLED. Voir cet article pour plus de détails.
Seul un account manager technique Kameleoon peut configurer des scripts d’arrêt personnalisés.
  1. Différés : Le moteur reporte le code et les campagnes à un second appel si nécessaire. Dans ce cas, le moteur récupère la configuration et les campagnes en mode SYNC depuis https://SITECODE.kameleoon.com/engine-configuration.js (précédemment nommé kameleoon-configuration.js) et https://SITECODE.kameleoon.com/engine-campaigns.js (précédemment nommé kameleoon-actions.js), respectivement.
Seul un account manager technique Kameleoon peut configurer l’option de différer toutes les campagnes. Vous pouvez différer des expériences spécifiques en utilisant le tag “DELAYED”.
S’il n’y a pas de motifs de blocage, le moteur passe à l’étape de suivi des données du visiteur.

Flux de code : suivi

Après l’initialisation, Kameleoon récupère les données du visiteur :
  1. Kameleoon collecte les données techniques telles que le navigateur et le système d’exploitation du visiteur.
  2. Si vous activez unifier les données de session entre sous-domaines, Kameleoon récupère les données antérieures à l’aide d’une iFrame sur le domaine principal de stockage local.
  3. Si vous activez la synchronisation en temps réel des visites ou l’option cross-device, le moteur récupère l’historique d’usage depuis les serveurs Kameleoon.
La synchronisation en temps réel est active par défaut pour Kameleoon Feature Experimentation ou pour Safari afin de gérer les impacts ITP.
  1. Le moteur initialise un visiteur. S’il n’existe aucun code dans le cookie kameleoonVisitorCode ou dans le stockage local, le moteur assigne un nouveau code visiteur et analyse toutes les visites.
  2. Le moteur analyse et stocke des données telles que l’URL de la page, l’appareil, le système d’exploitation, la géolocalisation et les objectifs.
Si vous utilisez le module complémentaire de recommandation produit, Kameleoon instancie le moteur de recommandation ici.
  1. Le script personnalisé global exécute tout JavaScript inséré avant d’initialiser les expériences.
  2. Le script global d’expérience s’exécute après le script personnalisé global. Ce script s’exécute indépendamment du ciblage et s’arrête lorsque l’expérience est mise en pause. Consultez ce guide pour plus de détails.
  3. Le moteur exécute les commandes en attente de la CommandQueue qui n’utilisent pas le paramètre IMMEDIATE.
  4. L’événement Kameleoon::Started se déclenche lorsque l’initialisation est terminée et le moteur stocke les données.
  5. Si vous activez la gestion SPA, Kameleoon surveille les changements d’URL. Lorsque l’URL change, le moteur recharge pour s’assurer que les campagnes fonctionnent correctement sur la nouvelle vue.
  6. Avant d’initialiser les campagnes, Kameleoon :
    • Vérifie la présence d’un bloqueur de publicités.
    • Exécute mutationObserver pour optimiser les opérations querySelector.
    • Récupère les données de géolocalisation depuis https://eu-data.kameleoon.io/ip si le segment l’exige.
  7. Pour charger la configuration des campagnes, Kameleoon récupère les données depuis https://SITECODE.kameleoon.com/live-experiments/config.js et les met en cache pendant 2 minutes.
La fonctionnalité Live Update Experiments rafraîchit les expériences taguées LIVE-UPDATE pour permettre des changements de configuration en temps réel sans retards de mise en cache du navigateur.

Flux de code : exécution

Lorsque la boucle d’expérimentation s’exécute, le moteur :
  1. Si le visiteur fait partie d’un groupe “holdout”, le moteur envoie un événement d’inclusion holdout.
  2. Le moteur déclenche un événement d’exposition contenant un nonce, un experimentID et un variationId. Par exemple : eventType=experiment&nonce=5800F1BDD0667747&id=250830&variationId=978588.
  3. Si le visiteur n’est pas dans un groupe holdout, le moteur envoie un “événement d’exclusion holdout”.
Les expériences holdout vous permettent de gérer et de bloquer d’autres expériences :
  • Le moteur vérifie d’abord les expériences holdout.
  • Si un utilisateur est dans un groupe holdout, le moteur l’assigne à un groupe et envoie un événement à des fins de reporting.
  • Si l’utilisateur est dans le groupe de référence, le moteur bloque toutes les autres expériences.
  • Si l’utilisateur est dans le groupe de variation, le moteur permet aux autres expériences de se dérouler.
Pour en savoir plus, consultez le guide de gestion des Holdouts.
Le moteur démarre ensuite la collecte de données. Si une personnalisation se déclenche mais ne s’affiche pas, le moteur renvoie l’un des motifs de blocage suivants :
  • PERSONALIZATION_CAPPING : La personnalisation a atteint sa limite globale de visiteurs.
  • SCHEDULE : La personnalisation est désactivée en fonction de son planning.
  • SCENARIO : Certaines conditions de scénario ne sont pas remplies.
  • PRIORITY : Une personnalisation de priorité supérieure existe.
  • VISITOR_CAPPING : Le visiteur a atteint une limite empêchant l’affichage.
Si vous associez un tag DELAYED à une expérience, le moteur la déclenche après le premier chargement de page. Le moteur télécharge les données de variation depuis https://SITECODE.kameleoon.com/(personalizations)/$campaign_id/variations/$variation_id.js.
Différer une expérience est utile pour les popups ou les modifications situées sous la ligne de flottaison, où le clignotement est minime.
Pour le module complémentaire AI Opportunity Detection, Kameleoon télécharge les définitions de segments depuis https://SITECODE.kameleoon.com/audiences/segments.js pour détecter les opportunités.
Kameleoon vérifie les segments créés ou modifiés au cours des 90 derniers jours, à l’exclusion de ceux commençant par [DEV], [TEST] ou [QA].
Analysez ces informations sur la page de résultats pour suivre les taux de conversion et la croissance potentielle du chiffre d’affaires.