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 etiquetaengine.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:
-
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 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.-
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.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].