Skip to main content

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 de vos pages web. 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.

File d’attente du suivi et événements d’activité

Le moteur traite les requêtes sortantes via une file d’attente interne qui s’exécute environ toutes les 500 ms. La file regroupe les événements en lots et envoie récursivement des lots supplémentaires si nécessaire. Lors du déchargement ou du nettoyage de la page, le moteur force le traitement immédiat de tous les événements en file d’attente. Sur Safari, le moteur conserve les événements non envoyés dans le stockage de session pour éviter toute perte de données. Le moteur envoie également un événement d’activité toutes les 60 secondes lorsqu’il détecte un défilement ou un clic. Lorsque le moteur ne détecte aucune activité, il n’effectue aucun appel de suivi supplémentaire.

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.

FAQ

Le moteur Kameleoon lance plusieurs requêtes réseau pour assurer une expérience fluide :

Requête de segments

  • Objectif : Collecte les événements pour les segments ciblés par le visiteur.
  • Endpoint : https://${SITECODE}.kameleoon.io/audiences/segments.js
  • Méthode : GET
  • Note : Le navigateur met le fichier en cache pendant 90 minutes.

Requête de configuration des expériences en mise à jour en direct

  • Objectif : Récupère la configuration des expériences taguées LIVE-UPDATE.
  • Endpoint : https://${SITECODE}.kameleoon.io/live-experiments/config.js
  • Méthode : GET
  • Note : Le navigateur met le fichier en cache pendant 2 minutes.

Requête de configuration des règles de feature flag

  • Objectif : Charge les règles et variations de feature flag depuis un fichier distinct de la configuration principale. Le moteur envoie cette requête uniquement lorsque le site contient au moins une règle de feature flag.
  • Endpoint : https://${SITECODE}.kameleoon.io/live-ff/config.js
  • Méthode : GET
  • Note : Pour servir le fichier depuis votre propre emplacement (par exemple, un proxy ou un CDN), définissez window.kameleoonFeatureFlagRulesFile avec l’URL complète avant le chargement du moteur Kameleoon.
  • Écouteur : Pour attendre la fin de cette requête et exécuter du code uniquement une fois que le moteur a enregistré les règles de feature flag, écoutez l’événement Kameleoon::FeatureFlagFileLoaded :

Requête de variation d’expérience différée

  • Objectif : Charge les données de variation pour les expériences taguées DELAYED.
  • Endpoint : https://${SITECODE}.kameleoon.io/experiments/${action.id}/variations/${variationId}.js
  • Méthode : GET
  • Note : Le navigateur met le fichier en cache pendant 30 jours.

Requête de variation de personnalisation différée

  • Objectif : Charge les données de variation pour les personnalisations taguées DELAYED.
  • Endpoint : https://${SITECODE}.kameleoon.io/personalizations/${action.id}/variations/${variationId}.js
  • Méthode : GET
  • Note : Le navigateur met le fichier en cache pendant 30 jours.

Requête des visites précédentes

Requête des événements de suivi

  • Objectif : Enregistre les événements pendant les visites.
  • Endpoint : https://(eu|na)-data.kameleoon.(eu|io)/visit/events
  • Méthode : POST
Kameleoon envoie un événement toutes les 60 secondes lorsqu’un défilement ou un clic se produit. Ce suivi garantit une mesure correcte de la durée de session. Si le moteur ne détecte aucune activité, il n’effectue aucun appel de suivi supplémentaire.

Requête d’adresse IP

  • Objectif : Permet l’exclusion ou l’inclusion de visiteurs en fonction de l’adresse IP.
  • Endpoint : https://(eu|na)-data.kameleoon.(eu|io)/ip
  • Méthode : GET
  • Note : Kameleoon ne stocke jamais les adresses IP dans des bases de données. Le navigateur du visiteur utilise l’adresse IP uniquement à des fins de comparaison.

Requête de géolocalisation

  • Objectif : Obtient les données de géolocalisation pour le ciblage et l’analyse.
  • Endpoint : https://(eu|na)-data.kameleoon.(eu|io)/geolocation
  • Méthode : GET

Requête météo actuelle

  • Objectif : Renvoie les conditions météorologiques actuelles.
  • Endpoint : https://(eu|na)-data.kameleoon.(eu|io)/weather/weather
  • Méthode : GET

Requête de prévisions météorologiques

  • Objectif : Renvoie des prévisions météorologiques sur 5 jours.
  • Endpoint : https://(eu|na)-data.kameleoon.(eu|io)/weather/forecast
  • Méthode : GET

Requête de détection du script Kameleoon

  • Objectif : Détecte le statut d’implémentation du Kameleoon Script.
  • Endpoint : https://(eu|na)-data.kameleoon.(eu|io)/active-script/event
  • Méthode : POST

Requête des produits

  • Objectif : Recueille les événements produits pour le ciblage et les recommandations.
  • Endpoint : https://(eu|na)-data.kameleoon.(eu|io)/product/events
  • Méthode : POST

Requête des scores de conversion Kameleoon

  • Objectif : Récupère les scores prédictifs pour le ciblage.
  • Endpoint : https://(eu|na)-data.kameleoon.(eu|io)/predict/latestPredictionScoreHistograms
  • Méthode : GET