Saltar al contenido principal

Flujo de ejecución del motor

Conozca cómo el motor de experimentación carga, realiza el seguimiento y ejecuta los experimentos.

Visión general del motor de experimentación

Kameleoon proporciona una solución de optimización en una única plataforma para la experimentación de aplicaciones web y full-stack. La plataforma admite dos soluciones principales:
  • Web Experimentation: Realice pruebas A/B y otras formas de experimentación para sitios y aplicaciones web.
  • Feature Experimentation: Habilite el feature flagging y la experimentación full-stack. Kameleoon también proporciona APIs y herramientas adicionales para eliminar el flickering en experimentos A/B, integrarse con sus herramientas existentes y automatizar tareas.

Flujo del código: carga

El motor de Kameleoon ejecuta la etiqueta engine.js (anteriormente kameleoon.js). Invoque esta etiqueta JavaScript a través del código fuente HTML de las páginas de su aplicación. En el punto de entrada, el motor:
  1. Activación: La etiqueta engine.js invoca una llamada a la Activation API a través de Kameleoon.Analyst.load().
  2. Ejecución de la cola de comandos: Tras la carga, el motor comprueba el array kameleoonQueue y ejecuta los comandos en el orden en que los haya añadido. Utilícelo para el código que deba ejecutarse antes de que Kameleoon instancie las funciones.
Kameleoon solo ejecuta las funciones añadidas a la cola con el parámetro IMMEDIATE.
  1. Anti-flicker y variables globales: El flickering se produce cuando la página original se muestra brevemente antes de que aparezca la variación. Este efecto puede provocar resultados inexactos. Kameleoon utiliza técnicas avanzadas para eliminar el flickering. Si configura el anti-flicker, el sistema carga el script de Kameleoon de forma asíncrona con código anti-flicker.
Una vez que Kameleoon termina de cargarse, la variable window.KameleoonEndLoadTime almacena la marca de tiempo de finalización.
Ajuste el timeout mediante la variable kameleoonLoadingTimeout en el snippet de instalación. Le recomendamos mantener el valor predeterminado de 1000 milisegundos (o 750 milisegundos para las implementaciones modernas). Esta variable determina el tiempo máximo durante el cual la etiqueta de instalación puede retrasar la visualización de la página mientras espera al archivo de aplicación.
  1. Comprobación de motivos de bloqueo: Antes de completar la inicialización, el motor comprueba los siguientes motivos de bloqueo:
    • Storage: Si el almacenamiento local o de sesión no está disponible, el motor finaliza y devuelve el evento Kameleoon::Aborted con el código STORAGE.
    • Timeout: Si engine.js tarda más de 750 ms en cargarse y ha configurado el proyecto para deshabilitar Kameleoon en la página o visita, el motor devuelve TIMEOUT.
    • Prerender: Kameleoon requiere que el documento esté listo (document.visibilityState == "prerender"). Si no lo está, el script finaliza y devuelve PRERENDER. Se recarga cuando cambia el estado de visibilidad.
    • Custom script: Si un script personalizado aborta la sesión, el motor devuelve SCRIPT.
    • Parameter: Si la URL contiene KameleoonDisabled == true, el motor devuelve PARAMETER y finaliza.
    • Disabled: Si deshabilita el proyecto en el panel, el motor devuelve DISABLED. Consulte este artículo para más detalles.
Solo un technical account manager de Kameleoon puede configurar scripts personalizados de cancelación.
  1. Diferimientos: El motor pospone el código y las campañas para una segunda llamada si es necesario. En este caso, el motor obtiene la configuración y las campañas en modo SYNC desde https://SITECODE.kameleoon.com/engine-configuration.js (anteriormente denominado kameleoon-configuration.js) y https://SITECODE.kameleoon.com/engine-campaigns.js (anteriormente denominado kameleoon-actions.js), respectivamente.
Solo un technical account manager de Kameleoon puede configurar la opción de aplazar todas las campañas. Puede aplazar experimentos específicos utilizando la etiqueta “DELAYED”.
Si no existen motivos de bloqueo, el motor avanza a la fase de seguimiento de datos del visitante.

Flujo del código: seguimiento

Tras la inicialización, Kameleoon recupera los datos del visitante:
  1. Kameleoon recopila datos técnicos como el navegador y el sistema operativo del visitante.
  2. Si habilita unify session data across subdomains, Kameleoon recupera datos anteriores utilizando un iFrame en el dominio principal de local storage.
  3. Si habilita real-time sync of visits o la opción cross-device, el motor obtiene el historial de uso desde los servidores de Kameleoon.
La sincronización en tiempo real está activa por defecto para Kameleoon Feature Experimentation o para Safari, con el fin de gestionar los impactos de ITP.
  1. El motor inicializa un visitante. Si no existe ningún código en la cookie kameleoonVisitorCode ni en el local storage, el motor asigna un nuevo código de visitante y analiza todas las visitas.
  2. El motor analiza y almacena datos como la URL de la página, el dispositivo, el sistema operativo, la geolocalización y los objetivos.
Si utiliza el complemento de recomendación de productos, Kameleoon instancia aquí el motor de recomendaciones.
  1. El script personalizado global ejecuta cualquier JavaScript insertado antes de inicializar los experimentos.
  2. El script global del experimento se ejecuta después del script global personalizado. Este script se ejecuta independientemente de la segmentación y se detiene cuando el experimento se pausa. Consulte esta guía para más detalles.
  3. El motor ejecuta los comandos pendientes de la CommandQueue que no utilizan el parámetro IMMEDIATE.
  4. El evento Kameleoon::Started se desencadena cuando la inicialización se completa y el motor almacena los datos.
  5. Si habilita la gestión de SPA, Kameleoon monitoriza los cambios de URL. Cuando la URL cambia, el motor se recarga para garantizar que las campañas funcionen correctamente en la nueva vista.
  6. Antes de inicializar las campañas, Kameleoon:
    • Comprueba si hay un bloqueador de anuncios.
    • Ejecuta mutationObserver para optimizar las operaciones de querySelector.
    • Obtiene los datos de geolocalización desde https://eu-data.kameleoon.io/ip si el segmento lo requiere.
  7. Para cargar la configuración de la campaña, Kameleoon obtiene datos de https://SITECODE.kameleoon.com/live-experiments/config.js y los almacena en caché durante 2 minutos.
La funcionalidad Live Update Experiments actualiza los experimentos etiquetados con LIVE-UPDATE para permitir cambios de configuración en tiempo real sin retrasos por el almacenamiento en caché del navegador.

Flujo del código: ejecución

Cuando se ejecuta el bucle de experimentación, el motor:
  1. Si el visitante forma parte de un grupo “holdout”, el motor envía un evento de inclusión en el holdout.
  2. El motor desencadena un evento de exposición que contiene un nonce, un experimentID y un variationId. Por ejemplo: eventType=experiment&nonce=5800F1BDD0667747&id=250830&variationId=978588.
  3. Si el visitante no está en un grupo holdout, el motor envía un “evento de exclusión del holdout”.
Los experimentos holdout le permiten gestionar y bloquear otros experimentos:
  • El motor comprueba primero los experimentos holdout.
  • Si un usuario está en un grupo holdout, el motor lo asigna a un grupo y envía un evento para los informes.
  • Si el usuario está en el grupo de referencia, el motor bloquea todos los demás experimentos.
  • Si el usuario está en el grupo de variación, el motor permite que continúen los demás experimentos.
Más información en la guía de gestión de holdouts.
A continuación, el motor inicia la recopilación de datos. Si una personalización se desencadena pero no se muestra, el motor devuelve uno de los siguientes motivos de bloqueo:
  • PERSONALIZATION_CAPPING: La personalización ha alcanzado su límite global de visitantes.
  • SCHEDULE: La personalización está desactivada según su programación.
  • SCENARIO: Algunas condiciones del escenario no se cumplen.
  • PRIORITY: Existe una personalización de mayor prioridad.
  • VISITOR_CAPPING: El visitante ha alcanzado un límite que impide su visualización.
Si asocia una etiqueta DELAYED a un experimento, el motor lo desencadena después de la primera carga de página. El motor descarga los datos de la variación desde https://SITECODE.kameleoon.com/(personalizations)/$campaign_id/variations/$variation_id.js.
Aplazar un experimento es útil para popups o modificaciones por debajo del pliegue, donde el flickering es mínimo.
Para el complemento AI Opportunity Detection, Kameleoon descarga las definiciones de segmentos desde https://SITECODE.kameleoon.com/audiences/segments.js para detectar oportunidades.
Kameleoon comprueba los segmentos creados o modificados en los últimos 90 días, excluyendo los que comienzan por [DEV], [TEST] o [QA].
Analice esta información en la página de resultados para hacer seguimiento de las tasas de conversión y el potencial crecimiento de ingresos.