Actualmente estoy generando métricas en mi aplicación web generando un evento con un nombre y una marca de tiempo absoluta asociada. Estos eventos se agregan en un repositorio central de eventos que se parece a:
const metricEvents = [ { name: appStart, time: window.performance.timing.responseStart } ] metricEvents.push({ name: 'interactive', time: new Date().getTime() })Luego puedo restar la hora de finalización de la hora de inicio y obtener una duración para esa tarea.
Mi aplicación web utiliza Web Workers e iframes de origen cruzado, todos los cuales contribuyen con eventos métricos propios.
Actualmente, es bastante simple para mí enviar marcas de tiempo absolutas de los trabajadores/marcos y aún así calcular la duración de los eventos desde los puntos (por ejemplo A -> C o B -> E ).
Veo que PerformanceTiming está en desuso a favor de PerformanceNavigationTiming . El problema es que PerformanceNavigationTiming devuelve tiempos relativos relacionados con la entidad actual (marco, trabajador, host). Esto significa que ya no puedo usar mi enfoque actual para calcular los tiempos de las tareas.
Instintivamente busco obtener una marca de tiempo absoluta de la nueva API PerformanceNavigationTiming , ¿es eso posible o hay una mejor manera de abordar este objetivo con la nueva API?
El objeto Performance tiene una propiedad timeOrigin . Puede usarlo para obtener tiempos absolutos en varios contextos.
Puede ver este ejemplo en las especificaciones que ilustran exactamente su caso.