Importante
Estamos implementando esta función en fases empleando un indicador de función para reemplazar la experiencia SPA del navegador existente de manera predeterminada. No habrá una opción para elegir qué nueva versión de SPA recibirás; siempre recibirás la última versión automáticamente.
SPA (lanzado en el agente v1.298.0)
Se introdujo la consideración de tareas largas para reemplazar el extenso seguimiento de devolución de llamada empleado en las antiguas aplicaciones de página única (SPA). También sirve para rellenar los atributos jsDuration, timeToSettle y timeToLastCallbackEnd de los eventos AjaxRequest asociados con un BrowserInteraction.
Para determinados objetos nativos del navegador envueltos por el nrWrapper del agente, su devolución de llamada estará temporizada. Aquellas tareas de más de 50 ms de duración (tareas largas) pueden extender una BrowserInteraction. Esto siguió una heurística de navegación suave para determinar cuándo una interacción ocurría de forma natural. Ahora, la interacción esperará adicionalmente y extenderá su duración hasta un periodo de 5 segundos sin tareas prolongadas, y su hora de finalización se reajustará en consecuencia.
Anteriormente, una solicitud Ajax asociada con la interacción no informaba ni registraba el tiempo de retorno de llamada, lo que resultaba en valores nulos para los tres atributos mencionados anteriormente. Con la actualización actual, XMLHttpRequest (pero no fetch) que forma parte de una interacción e incluye escuchadores de eventos que causan tareas largas tendrá el atributo jsDuration, timeToSettle y timeToLastCallbackEnd actualizado para reflejar el tiempo de la larga devolución de llamada.
SPA (lanzada en el agente v1.253.0)
Para los clientes que monitorean browser de la aplicación de página única (SPA), nos complace anunciar una revisión de nuestra funcionalidad de monitoreo de SPA, destinada a abordar numerosos puntos problemáticos:
- Últimas versiones inutilizables: los conflictos frecuentes con bibliotecas de terceros y la captura de interacciones poco confiable plagaron el agente existente, lo que a menudo hacía que la última versión fuera inutilizable.
- Soluciones de parcheo: abordar un problema con parches SPA a menudo generaba otro, lo que creaba un ciclo frustrante de correcciones y regresiones.
- Conflictos con bibliotecas de terceros: el ajuste global, particularmente alrededor de
Promises, a menudo interrumpía la funcionalidad del código debido a conflictos con otras bibliotecas. - Cuello de botella: Los conflictos con el código que emplea temporizadores, RAF y cadena de promesas provocaron problemas de rendimiento, desde ralentizaciones hasta bloqueos.
La experiencia de monitoreo SPA actualizada está diseñada para eliminar estos problemas y proporcionar una experiencia de monitoreo significativamente mejorada. Los cambios clave incluyen:
Ejecución sin envolver: al no envolver los elementos globales principales, la nueva experiencia de SPA libera mejoras en la velocidad de ejecución de su aplicación.
Alineado con la heurística de navegación suave: la nueva experiencia adopta la navegación suave de Google Chrome, proporcionando un seguimiento de la interacción más preciso y una mejor alineación con el comportamiento browser .
Determinación de interacción simplificada: las interacciones ahora se definen como un evento UI (clic/pulsación de tecla/enviar -> cambio de ruta -> modificación DOM ), lo que ofrece un enfoque de captura más claro y eficiente.
- Posible disociación de eventos: es posible que observe que los eventos
AjaxRequestyJavascriptErrorpreviamente asociados se disocien de la interacción, lo que refleja el enfoque en la interacción impulsada por UI .
- Posible disociación de eventos: es posible que observe que los eventos
Centrar en las métricas clave: si bien los datos informados permanecen prácticamente sin cambios, la nueva experiencia ya no rastrea la ejecución de JavaScript ni la duración de la devolución de llamada dentro de la interacción, lo que agiliza la información informada.
Duraciones de interacción reducidas: espere duraciones de interacción significativamente más cortas, particularmente para cambios de ruta. Las cargas iniciales de la página experimentarán una ligera reducción.
Actualizaciones de API:
- Se agregó nuevo argumento opcional
.interaction({waitForEnd: true})a la función.interaction(): esto permite personalizar el tiempo de finalización de la interacción del usuario. La funcionalidad.interaction()existente permanece sin cambios. - API obsoleta: La función
createTracer: Si bien sigue siendo funcional, la funcióncreateTracerestá obsoleta porque ya no mantiene abierta la interacción ni multiplica las devoluciones de llamadas. Nota: Si continúa empleandocreateTracercon la nueva experiencia de SPA, no se creará el eventoBrowserTiming.
- Se agregó nuevo argumento opcional
Problemas conocidos
Uso de API:
newrelic.interaction().end()Solución alternativa: si anteriormente empleó esto para abordar problemas de cierre de interacción, es posible que ahora vea una interacción adicional e innecesaria. Revise su uso para garantizar resultados óptimos.createTracer()Cambio de funcionalidad:createTracer()ya no mantiene abierta la interacción ni programa la devolución de llamada. Si confió en esto para rastrear el código JavaScript, explore enfoques alternativos.
AjaxRequestasociación:- Posible exclusión de la interacción: las solicitudes Ajax que se iniciaron cerca del final de la interacción anterior ahora podrían quedar excluidas debido a la duración más corta de la interacción.
- Extensión manual: si necesita que una solicitud sea atributo de una interacción específica, use el argumento
.interaction({waitForEnd: true})agregado a la función.interaction()para mantener la interacción abierta hasta que se active la solicitud, luego.end()la interacción. Esto asociará la solicitud a la interacción.
Deja un comentario
Envíe un problema de GitHub para informar cualquier error, solicitud de funciones o mejoras de rendimiento.
Para cualquier otro comentario, comparta sus ideas y sugerencias enviando un email browser-agent@newrelic.com con una línea de asunto que comience con [SoftNav]: .