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 tagengine.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 :
-
Activation : Le tag
engine.jsinvoque un appel à l’API d’activation viaKameleoon.Analyst.load(). - 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.- 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.
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.-
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::Abortedavec le codeSTORAGE. - Timeout : Si
engine.jsmet plus de 750 ms à charger et que vous avez configuré le projet pour désactiver Kameleoon pour la page ou la visite, le moteur renvoieTIMEOUT. - 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 renvoiePRERENDER. 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 renvoiePARAMETERet 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.
- Storage : Si le stockage local ou de session est indisponible, le moteur s’arrête et renvoie l’événement
Seul un account manager technique Kameleoon peut configurer des scripts d’arrêt personnalisés.
- 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) ethttps://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”.
Flux de code : suivi
Après l’initialisation, Kameleoon récupère les données du visiteur :- Kameleoon collecte les données techniques telles que le navigateur et le système d’exploitation du visiteur.
- 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.
- Si vous activez la
synchronisation en temps réel des visitesou l’optioncross-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.
- Le moteur initialise un visiteur. S’il n’existe aucun code dans le cookie
kameleoonVisitorCodeou dans le stockage local, le moteur assigne un nouveau code visiteur et analyse toutes les visites. - 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.
- Le script personnalisé global exécute tout JavaScript inséré avant d’initialiser les expériences.
- 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.
- Le moteur exécute les commandes en attente de la
CommandQueuequi n’utilisent pas le paramètreIMMEDIATE. - L’événement
Kameleoon::Startedse déclenche lorsque l’initialisation est terminée et le moteur stocke les données. - 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.
- Avant d’initialiser les campagnes, Kameleoon :
- Vérifie la présence d’un bloqueur de publicités.
- Exécute
mutationObserverpour optimiser les opérationsquerySelector. - Récupère les données de géolocalisation depuis
https://eu-data.kameleoon.io/ipsi le segment l’exige.
- Pour charger la configuration des campagnes, Kameleoon récupère les données depuis
https://SITECODE.kameleoon.com/live-experiments/config.jset 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 :- Si le visiteur fait partie d’un groupe “holdout”, le moteur envoie un événement d’inclusion holdout.
- Le moteur déclenche un événement d’exposition contenant un
nonce, unexperimentIDet unvariationId. Par exemple :eventType=experiment&nonce=5800F1BDD0667747&id=250830&variationId=978588. - 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.
- 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.
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.
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].FAQ
Quelles requêtes réseau le moteur Kameleoon effectue-t-il ?
Quelles requêtes réseau le moteur Kameleoon effectue-t-il ?
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.kameleoonFeatureFlagRulesFileavec 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
- Objectif : Obtient les visites précédentes pour la réconciliation cross-device et la synchronisation en temps réel des visites.
- Endpoint :
https://(eu|na)-data.kameleoon.(eu|io)/visit/visitor - Méthode : GET
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