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 en web y en apps 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 etiquetaengine.js (anteriormente kameleoon.js). Invoque esta etiqueta JavaScript a través del código fuente HTML de sus páginas web.
En el punto de entrada, el motor:
-
Activación: La etiqueta
engine.jsinvoca una llamada a la Activation API a través deKameleoon.Analyst.load(). - 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.- 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.
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 750 milisegundos. 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.-
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::Abortedcon el códigoSTORAGE. - Timeout: Si
engine.jstarda más de 750 ms en cargarse y ha configurado el proyecto para deshabilitar Kameleoon en la página o visita, el motor devuelveTIMEOUT. - Prerender: Kameleoon requiere que el documento esté listo (
document.visibilityState == "prerender"). Si no lo está, el script finaliza y devuelvePRERENDER. 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 devuelvePARAMETERy finaliza. - Disabled: Si deshabilita el proyecto en el panel, el motor devuelve
DISABLED. Consulte este artículo para más detalles.
- Storage: Si el almacenamiento local o de sesión no está disponible, el motor finaliza y devuelve el evento
Solo un technical account manager de Kameleoon puede configurar scripts personalizados de cancelación.
- 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 denominadokameleoon-configuration.js) yhttps://SITECODE.kameleoon.com/engine-campaigns.js(anteriormente denominadokameleoon-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”.
Flujo del código: seguimiento
Tras la inicialización, Kameleoon recupera los datos del visitante:- Kameleoon recopila datos técnicos como el navegador y el sistema operativo del visitante.
- Si habilita unify session data across subdomains, Kameleoon recupera datos anteriores utilizando un iFrame en el dominio principal de local storage.
- Si habilita
real-time sync of visitso la opcióncross-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.
- El motor inicializa un visitante. Si no existe ningún código en la cookie
kameleoonVisitorCodeni en el local storage, el motor asigna un nuevo código de visitante y analiza todas las visitas. - 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.
- El script personalizado global ejecuta cualquier JavaScript insertado antes de inicializar los experimentos.
- 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.
- El motor ejecuta los comandos pendientes de la
CommandQueueque no utilizan el parámetroIMMEDIATE. - El evento
Kameleoon::Startedse desencadena cuando la inicialización se completa y el motor almacena los datos. - 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.
- Antes de inicializar las campañas, Kameleoon:
- Comprueba si hay un bloqueador de anuncios.
- Ejecuta
mutationObserverpara optimizar las operaciones dequerySelector. - Obtiene los datos de geolocalización desde
https://eu-data.kameleoon.io/ipsi el segmento lo requiere.
- Para cargar la configuración de la campaña, Kameleoon obtiene datos de
https://SITECODE.kameleoon.com/live-experiments/config.jsy 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.Cola de seguimiento y eventos de actividad
El motor procesa las solicitudes salientes a través de una cola interna que se ejecuta aproximadamente cada 500 ms. La cola agrupa los eventos en lotes y envía lotes adicionales de forma recursiva si es necesario. Al descargar la página o durante su limpieza, el motor fuerza el procesamiento inmediato de todos los eventos en cola. En Safari, el motor guarda los eventos no enviados en el almacenamiento de sesión para evitar la pérdida de datos. El motor también envía un evento de actividad cada 60 segundos cuando detecta un desplazamiento o un clic. Cuando el motor no detecta actividad, no realiza llamadas de seguimiento adicionales.Flujo del código: ejecución
Cuando se ejecuta el bucle de experimentación, el motor:- Si el visitante forma parte de un grupo “holdout”, el motor envía un evento de inclusión en el holdout.
- El motor desencadena un evento de exposición que contiene un
nonce, unexperimentIDy unvariationId. Por ejemplo:eventType=experiment&nonce=5800F1BDD0667747&id=250830&variationId=978588. - 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.
- 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.
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.
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].FAQ
¿Qué solicitudes de red realiza el motor de Kameleoon?
¿Qué solicitudes de red realiza el motor de Kameleoon?
El motor de Kameleoon inicia varias solicitudes de red para garantizar una experiencia fluida:
Solicitud de segmentos
- Propósito: Recopila eventos para los segmentos objetivo del visitante.
- Endpoint:
https://${SITECODE}.kameleoon.io/audiences/segments.js - Método: GET
- Nota: El navegador almacena el archivo en caché durante 90 minutos.
Solicitud de configuración de experimentos Live-update
- Propósito: Recupera la configuración de los experimentos etiquetados como LIVE-UPDATE.
- Endpoint:
https://${SITECODE}.kameleoon.io/live-experiments/config.js - Método: GET
- Nota: El navegador almacena el archivo en caché durante 2 minutos.
Solicitud de configuración de reglas de feature flag
- Propósito: Carga las reglas y variaciones de feature flag desde un archivo independiente de la configuración principal. El motor envía esta solicitud solo cuando el sitio tiene al menos una regla de feature flag.
- Endpoint:
https://${SITECODE}.kameleoon.io/live-ff/config.js - Método: GET
- Nota: Para servir el archivo desde su propia ubicación (por ejemplo, un proxy o una CDN), asigne la URL completa a
window.kameleoonFeatureFlagRulesFileantes de que se cargue el motor de Kameleoon. - Listener: Para esperar a que esta solicitud finalice y ejecutar código solo después de que el motor registre las reglas de feature flag, escuche el evento
Kameleoon::FeatureFlagFileLoaded:
Solicitud de variación de experimento diferido
- Propósito: Carga los datos de variación de los experimentos etiquetados como DELAYED.
- Endpoint:
https://${SITECODE}.kameleoon.io/experiments/${action.id}/variations/${variationId}.js - Método: GET
- Nota: El navegador almacena el archivo en caché durante 30 días.
Solicitud de variación de personalización diferida
- Propósito: Carga los datos de variación de las personalizaciones etiquetadas como DELAYED.
- Endpoint:
https://${SITECODE}.kameleoon.io/personalizations/${action.id}/variations/${variationId}.js - Método: GET
- Nota: El navegador almacena el archivo en caché durante 30 días.
Solicitud de visitas anteriores
- Propósito: Obtiene visitas anteriores para la reconciliación entre dispositivos y la sincronización de visitas en tiempo real.
- Endpoint:
https://(eu|na)-data.kameleoon.(eu|io)/visit/visitor - Método: GET
Solicitud de eventos de tracking
- Propósito: Registra eventos durante las visitas.
- Endpoint:
https://(eu|na)-data.kameleoon.(eu|io)/visit/events - Método: POST
Kameleoon envía un evento cada 60 segundos cuando se produce un desplazamiento o un clic. Así se garantiza un seguimiento correcto de la duración de la sesión. Si el motor no detecta actividad, no realiza ninguna llamada de seguimiento adicional.
Solicitud de dirección IP
- Propósito: Permite excluir o incluir visitantes en función de la dirección IP.
- Endpoint:
https://(eu|na)-data.kameleoon.(eu|io)/ip - Método: GET
- Nota: Kameleoon nunca almacena direcciones IP en las bases de datos. El navegador del visitante utiliza la IP únicamente con fines de comparación.
Solicitud de geolocalización
- Propósito: Obtiene datos de geolocalización para la segmentación y la analítica.
- Endpoint:
https://(eu|na)-data.kameleoon.(eu|io)/geolocation - Método: GET
Solicitud del clima actual
- Propósito: Devuelve las condiciones meteorológicas actuales.
- Endpoint:
https://(eu|na)-data.kameleoon.(eu|io)/weather/weather - Método: GET
Solicitud de pronóstico del clima
- Propósito: Devuelve un pronóstico meteorológico de 5 días.
- Endpoint:
https://(eu|na)-data.kameleoon.(eu|io)/weather/forecast - Método: GET
Solicitud de detección del script de Kameleoon
- Propósito: Detecta el estado de implementación del script de Kameleoon.
- Endpoint:
https://(eu|na)-data.kameleoon.(eu|io)/active-script/event - Método: POST
Solicitud de Products
- Propósito: Recopila eventos de producto para la segmentación y las recomendaciones.
- Endpoint:
https://(eu|na)-data.kameleoon.(eu|io)/product/events - Método: POST
Solicitud de Kameleoon Conversion Scores
- Propósito: Recupera puntuaciones predictivas para la segmentación.
- Endpoint:
https://(eu|na)-data.kameleoon.(eu|io)/predict/latestPredictionScoreHistograms - Método: GET