Skip to main content

Ausfuehrungsablauf der Engine

Erfahren Sie, wie die Experimentations-Engine Experimente laedt, verfolgt und ausfuehrt.

Ueberblick ueber die Experimentations-Engine

Kameleoon bietet eine Einzelplattform-Optimierungsloesung fuer Web- und Full-Stack-Anwendungsexperimente. Die Plattform unterstuetzt zwei Hauptloesungen:
  • Web Experimentation: Fuehren Sie A/B-Tests und andere Formen von Experimenten fuer Websites und Webanwendungen durch.
  • Feature Experimentation: Ermoeglichen Sie Full-Stack-Feature-Flagging und -Experimentation. Kameleoon stellt zudem zusaetzliche APIs und Tools bereit, um Flackern in A/B-Experimenten zu beseitigen, in Ihre bestehenden Tools zu integrieren und Aufgaben zu automatisieren.

Code-Ablauf: Laden

Die Kameleoon-Engine fuehrt das engine.js-Tag (frueher kameleoon.js) aus. Rufen Sie dieses JavaScript-Tag über den HTML-Quellcode Ihrer Webseiten auf. Am Einstiegspunkt fuehrt die Engine Folgendes aus:
  1. Aktivierung: Das engine.js-Tag ruft ueber Kameleoon.Analyst.load() einen Aufruf der Activation API auf.
  2. Ausfuehrung der Befehlswarteschlange: Nach dem Laden prueft die Engine das kameleoonQueue-Array und fuehrt Befehle in der Reihenfolge aus, in der Sie sie hinzugefuegt haben. Verwenden Sie dies fuer Code, der ausgefuehrt werden muss, bevor Kameleoon Funktionen instanziiert.
Kameleoon fuehrt nur Funktionen aus, die der Warteschlange mit dem Parameter IMMEDIATE hinzugefuegt wurden.
  1. Anti-Flicker und globale Variablen: Flackern tritt auf, wenn die Originalseite kurz angezeigt wird, bevor die Variation erscheint. Dieser Effekt kann zu ungenauen Ergebnissen fuehren. Kameleoon verwendet fortschrittliche Techniken, um Flackern zu beseitigen. Wenn Sie Anti-Flicker konfigurieren, laedt das System das Kameleoon-Skript asynchron mit Anti-Flicker-Code.
Sobald Kameleoon das Laden beendet hat, speichert die Variable window.KameleoonEndLoadTime den Abschlusszeitstempel.
Passen Sie das Timeout mithilfe der Variable kameleoonLoadingTimeout im Installations-Snippet an. Kameleoon empfiehlt, den Standardwert von 750 Millisekunden beizubehalten. Diese Variable legt fest, wie lange das Installations-Tag das Anzeigen der Seite maximal verzoegern darf, waehrend es auf die Anwendungsdatei wartet.
  1. Pruefung auf blockierende Gruende: Bevor die Initialisierung abgeschlossen wird, prueft die Engine die folgenden blockierenden Gruende:
    • Storage: Wenn lokaler oder Sitzungsspeicher nicht verfuegbar ist, beendet die Engine den Vorgang und gibt das Ereignis Kameleoon::Aborted mit dem Code STORAGE zurueck.
    • Timeout: Wenn das Laden von engine.js mehr als 750 ms dauert und Sie das Projekt so konfiguriert haben, dass Kameleoon fuer die Seite oder den Besuch deaktiviert wird, gibt die Engine TIMEOUT zurueck.
    • Prerender: Kameleoon erfordert, dass das Dokument bereit ist (document.visibilityState == "prerender"). Ist dies nicht der Fall, beendet das Skript den Vorgang und gibt PRERENDER zurueck. Es laedt erneut, wenn sich der Sichtbarkeitsstatus aendert.
    • Custom script: Wenn ein benutzerdefiniertes Skript die Sitzung abbricht, gibt die Engine SCRIPT zurueck.
    • Parameter: Wenn die URL KameleoonDisabled == true enthaelt, gibt die Engine PARAMETER zurueck und beendet den Vorgang.
    • Disabled: Wenn Sie das Projekt im Dashboard deaktivieren, gibt die Engine DISABLED zurueck. Siehe diesen Artikel fuer Details.
Nur ein technischer Account Manager von Kameleoon kann benutzerdefinierte Abbruchskripte konfigurieren.
  1. Verzoegerungen: Die Engine verschiebt Code und Kampagnen bei Bedarf auf einen zweiten Aufruf. In diesem Fall ruft die Engine die Konfiguration und Kampagnen im SYNC-Modus von https://SITECODE.kameleoon.com/engine-configuration.js (frueher kameleoon-configuration.js genannt) und https://SITECODE.kameleoon.com/engine-campaigns.js (frueher kameleoon-actions.js genannt) ab.
Nur ein technischer Account Manager von Kameleoon kann die Option zum Verschieben aller Kampagnen konfigurieren. Sie koennen bestimmte Experimente mit dem Tag “DELAYED” verschieben.
Wenn keine blockierenden Gruende vorliegen, geht die Engine zur Phase des Besucherdaten-Trackings ueber.

Code-Ablauf: Tracking

Nach der Initialisierung ruft Kameleoon Besucherdaten ab:
  1. Kameleoon erfasst technische Daten wie den Browser und das Betriebssystem des Besuchers.
  2. Wenn Sie Sitzungsdaten ueber Subdomains vereinheitlichen aktivieren, ruft Kameleoon vergangene Daten ueber ein iFrame auf der Hauptdomain des lokalen Speichers ab.
  3. Wenn Sie die Echtzeit-Synchronisation von Besuchen oder die Cross-Device-Option aktivieren, ruft die Engine die Nutzungshistorie von den Kameleoon-Servern ab.
Die Echtzeit-Synchronisation ist fuer Kameleoon Feature Experimentation oder fuer Safari standardmaessig aktiv, um die Auswirkungen von ITP zu verwalten.
  1. Die Engine initialisiert einen Besucher. Wenn im Cookie kameleoonVisitorCode oder im lokalen Speicher kein Code vorhanden ist, weist die Engine einen neuen Besuchercode zu und analysiert alle Besuche.
  2. Die Engine parst und speichert Daten wie Seiten-URL, Geraet, Betriebssystem, Geolokalisierung und Ziele.
Wenn Sie das Add-on fuer Produktempfehlungen verwenden, instanziiert Kameleoon hier die Empfehlungs-Engine.
  1. Das globale benutzerdefinierte Skript fuehrt eingefuegtes JavaScript aus, bevor Experimente initialisiert werden.
  2. Das globale Experimentskript wird nach dem benutzerdefinierten globalen Skript ausgefuehrt. Dieses Skript wird unabhaengig vom Targeting ausgefuehrt und stoppt, wenn das Experiment pausiert. Siehe diesen Leitfaden fuer Details.
  3. Die Engine fuehrt ausstehende Befehle aus der CommandQueue aus, die den Parameter IMMEDIATE nicht verwenden.
  4. Das Ereignis Kameleoon::Started wird ausgeloest, wenn die Initialisierung abgeschlossen ist, und die Engine speichert die Daten.
  5. Wenn Sie die SPA-Verwaltung aktivieren, ueberwacht Kameleoon URL-Aenderungen. Wenn sich die URL aendert, laedt die Engine neu, um sicherzustellen, dass die Kampagnen in der neuen Ansicht ordnungsgemaess funktionieren.
  6. Bevor die Kampagnen initialisiert werden, fuehrt Kameleoon Folgendes aus:
    • Prueft auf einen Werbeblocker.
    • Fuehrt mutationObserver aus, um querySelector-Operationen zu optimieren.
    • Ruft Geolokalisierungsdaten von https://eu-data.kameleoon.io/ip ab, falls das Segment dies erfordert.
  7. Um die Kampagnenkonfiguration zu laden, ruft Kameleoon Daten von https://SITECODE.kameleoon.com/live-experiments/config.js ab und speichert sie 2 Minuten lang im Cache.
Die Funktion Live Update Experiments aktualisiert mit LIVE-UPDATE markierte Experimente, um Echtzeit-Konfigurationsaenderungen ohne Browser-Caching-Verzoegerungen zu ermoeglichen.

Warteschlange für Tracking und Aktivitätsereignisse

Die Engine verarbeitet ausgehende Anfragen über eine interne Warteschlange, die etwa alle 500 ms läuft. Die Warteschlange bündelt Ereignisse in Batches und sendet bei Bedarf rekursiv weitere Batches. Beim Entladen oder Bereinigen der Seite erzwingt die Engine die sofortige Verarbeitung aller eingereihten Ereignisse. In Safari speichert die Engine nicht gesendete Ereignisse im Sitzungsspeicher, um Datenverlust zu vermeiden. Die Engine sendet außerdem alle 60 Sekunden ein Aktivitätsereignis, wenn sie einen Scroll oder Klick erkennt. Erkennt die Engine keine Aktivität, führt sie keinen zusätzlichen Tracking-Aufruf durch.

Code-Ablauf: Ausfuehrung

Wenn die Experimentations-Schleife ausgefuehrt wird, geht die Engine wie folgt vor:
  1. Wenn der Besucher Teil einer “Holdout”-Gruppe ist, sendet die Engine ein Holdout-Einschlussereignis.
  2. Die Engine loest ein Expositionsereignis aus, das eine nonce, eine experimentID und eine variationId enthaelt. Beispiel: eventType=experiment&nonce=5800F1BDD0667747&id=250830&variationId=978588.
  3. Wenn der Besucher nicht in einer Holdout-Gruppe ist, sendet die Engine ein “Holdout-Ausschlussereignis”.
Holdout-Experimente ermoeglichen es Ihnen, andere Experimente zu verwalten und zu blockieren:
  • Die Engine prueft zuerst auf Holdout-Experimente.
  • Wenn sich ein Nutzer in einer Holdout-Gruppe befindet, weist die Engine ihn einer Gruppe zu und sendet ein Ereignis zum Reporting.
  • Wenn sich der Nutzer in der Referenzgruppe befindet, blockiert die Engine alle anderen Experimente.
  • Wenn sich der Nutzer in der Variationsgruppe befindet, erlaubt die Engine, dass andere Experimente fortgesetzt werden.
Erfahren Sie mehr im Leitfaden zur Holdout-Verwaltung.
Die Engine startet dann die Datenerhebung. Wenn eine Personalisierung ausgeloest wird, aber nicht angezeigt wird, gibt die Engine einen der folgenden blockierenden Gruende zurueck:
  • PERSONALIZATION_CAPPING: Die Personalisierung hat ihr globales Besucherlimit erreicht.
  • SCHEDULE: Die Personalisierung ist aufgrund ihres Zeitplans deaktiviert.
  • SCENARIO: Einige Szenariobedingungen sind nicht erfuellt.
  • PRIORITY: Es existiert eine Personalisierung mit hoeherer Prioritaet.
  • VISITOR_CAPPING: Der Besucher hat ein Limit erreicht, das die Anzeige verhindert.
Wenn Sie einem Experiment einen DELAYED-Tag zuordnen, loest die Engine es nach dem ersten Seitenladevorgang aus. Die Engine laedt Variationsdaten von https://SITECODE.kameleoon.com/(personalizations)/$campaign_id/variations/$variation_id.js herunter.
Das Verzoegern eines Experiments ist nuetzlich fuer Popups oder Aenderungen unterhalb des sichtbaren Bereichs, bei denen das Flackern minimal ist.
Fuer das Add-on AI Opportunity Detection laedt Kameleoon Segmentdefinitionen von https://SITECODE.kameleoon.com/audiences/segments.js herunter, um Gelegenheiten zu erkennen.
Kameleoon prueft Segmente, die in den letzten 90 Tagen erstellt oder geaendert wurden, mit Ausnahme jener, die mit [DEV], [TEST] oder [QA] beginnen.
Analysieren Sie diese Informationen auf der Ergebnisseite, um Konversionsraten und potenzielles Umsatzwachstum zu verfolgen.

FAQ

Die Kameleoon-Engine stellt mehrere Netzwerkanfragen, um ein reibungsloses Erlebnis sicherzustellen:

Segmentanfrage

  • Zweck: Erfasst Ereignisse für die Segmente, zu denen der Besucher gehört.
  • Endpoint: https://${SITECODE}.kameleoon.io/audiences/segments.js
  • Methode: GET
  • Hinweis: Der Browser speichert die Datei 90 Minuten lang im Cache.

Anfrage für die Konfiguration von Live-Update-Experimenten

  • Zweck: Ruft die Konfiguration der Experimente mit dem Tag LIVE-UPDATE ab.
  • Endpoint: https://${SITECODE}.kameleoon.io/live-experiments/config.js
  • Methode: GET
  • Hinweis: Der Browser speichert die Datei 2 Minuten lang im Cache.

Anfrage für die Konfiguration der Feature-Flag-Regeln

  • Zweck: Lädt Feature-Flag-Regeln und Variationen aus einer Datei, die von der Hauptkonfiguration getrennt ist. Die Engine sendet diese Anfrage nur, wenn die Website mindestens eine Feature-Flag-Regel enthält.
  • Endpoint: https://${SITECODE}.kameleoon.io/live-ff/config.js
  • Methode: GET
  • Hinweis: Um die Datei von einem eigenen Speicherort auszuliefern (zum Beispiel über einen Proxy oder ein CDN), setzen Sie window.kameleoonFeatureFlagRulesFile auf die vollständige URL, bevor die Kameleoon-Engine geladen wird.
  • Listener: Um auf den Abschluss dieser Anfrage zu warten und Code erst auszuführen, nachdem die Engine die Feature-Flag-Regeln registriert hat, hören Sie auf das Ereignis Kameleoon::FeatureFlagFileLoaded:

Anfrage für verzögerte Experimentvariationen

  • Zweck: Lädt Variationsdaten für mit DELAYED markierte Experimente.
  • Endpoint: https://${SITECODE}.kameleoon.io/experiments/${action.id}/variations/${variationId}.js
  • Methode: GET
  • Hinweis: Der Browser speichert die Datei 30 Tage lang im Cache.

Anfrage für verzögerte Personalisierungsvariationen

  • Zweck: Lädt Variationsdaten für mit DELAYED markierte Personalisierungen.
  • Endpoint: https://${SITECODE}.kameleoon.io/personalizations/${action.id}/variations/${variationId}.js
  • Methode: GET
  • Hinweis: Der Browser speichert die Datei 30 Tage lang im Cache.

Anfrage zu vorherigen Besuchen

Anfrage für Tracking-Ereignisse

  • Zweck: Zeichnet Ereignisse während der Besuche auf.
  • Endpoint: https://(eu|na)-data.kameleoon.(eu|io)/visit/events
  • Methode: POST
Kameleoon sendet alle 60 Sekunden ein Ereignis, wenn ein Scroll oder Klick erfolgt. Dadurch wird die Sitzungsdauer korrekt erfasst. Erkennt die Engine keine Aktivität, führt sie keinen zusätzlichen Tracking-Aufruf durch.

IP-Adressanfrage

  • Zweck: Ermöglicht das Ausschließen oder Einschließen von Besuchern anhand der IP-Adresse.
  • Endpoint: https://(eu|na)-data.kameleoon.(eu|io)/ip
  • Methode: GET
  • Hinweis: Kameleoon speichert IP-Adressen niemals in Datenbanken. Der Browser des Besuchers verwendet die IP-Adresse ausschließlich zu Vergleichszwecken.

Geolokalisierungsanfrage

  • Zweck: Ruft Geolokalisierungsdaten für Targeting und Analysen ab.
  • Endpoint: https://(eu|na)-data.kameleoon.(eu|io)/geolocation
  • Methode: GET

Anfrage zum aktuellen Wetter

  • Zweck: Gibt die aktuellen Wetterbedingungen zurück.
  • Endpoint: https://(eu|na)-data.kameleoon.(eu|io)/weather/weather
  • Methode: GET

Wettervorhersage-Anfrage

  • Zweck: Gibt eine 5-Tage-Wettervorhersage zurück.
  • Endpoint: https://(eu|na)-data.kameleoon.(eu|io)/weather/forecast
  • Methode: GET

Anfrage zur Erkennung des Kameleoon-Skripts

  • Zweck: Erkennt den Implementierungsstatus des Kameleoon-Skripts.
  • Endpoint: https://(eu|na)-data.kameleoon.(eu|io)/active-script/event
  • Methode: POST

Produktanfrage

  • Zweck: Sammelt Produktereignisse für Targeting und Empfehlungen.
  • Endpoint: https://(eu|na)-data.kameleoon.(eu|io)/product/events
  • Methode: POST

Anfrage für Kameleoon-Konversionsscores

  • Zweck: Ruft Vorhersage-Scores für das Targeting ab.
  • Endpoint: https://(eu|na)-data.kameleoon.(eu|io)/predict/latestPredictionScoreHistograms
  • Methode: GET