Medición del rendimiento

Las aplicaciones que quieran medir el rendimiento de los flujos de autenticación en MSAL.js pueden hacerlo manualmente o consumir las medidas de rendimiento tomadas por la propia biblioteca. Para obtener mediciones de rendimiento es necesario configurar el cliente de rendimiento en opciones de configuración de telemetría y añadir una llamada de retorno de rendimiento.

Configurar el cliente de rendimiento de telemetría

import { PublicClientApplication, BrowserPerformanceClient } from "@azure/msal-browser";

const msalConfig = {
    auth: {
        ...
    },
    cache: {
        ...
    },
    system: {
        ...
    }
}

const msalInstance = new PublicClientApplication({
    ...msalConfig,
    telemetry: {
        client: new BrowserPerformanceClient(msalConfig)
    }
});
msalInstance.initialize();

Añadir llamada de retorno de rendimiento

Las aplicaciones pueden registrar una llamada de retorno para recibir las mediciones de rendimiento realizadas por la biblioteca. Estas medidas incluirán medidas de un extremo a otro para las API de nivel superior, así como medidas para las API internas importantes.

Nota para las aplicaciones propias de MSFT: publicaremos una compilación interna de @azure/msal-browser que ya está instrumentada para capturar esta telemetría. Póngase en contacto con nosotros para obtener más información.

Example

const msalInstance = new PublicClientApplication(config);

msalInstance.addPerformanceCallback((events: PerformanceEvent[]) => {
    events.forEach(event => {
        console.log(event);
    });
});

Evento de ejemplo:

const event: PerformanceEvent = {
    correlationId: "aaaa0000-bb11-2222-33cc-444444dddddd",
	durationMs: 1873,
	endPageVisibility: "hidden",
	fromCache: false,
	name: "acquireTokenSilent",
	startPageVisibility: "visible",
	startTimeMs: 1636414041888,
	success: true,
    silentCacheClientAcquireTokenDurationMs: 0,
    silentRefreshClientAcquireTokenDurationMs: 150,
    silentIframeClientAcquireTokenDurationMs: 0
    cryptoOptsGetPublicKeyThumbprintDurationMs: 200,
    cryptoOptsSignJwtDurationMs: 8,
    clientId: "00001111-aaaa-2222-bbbb-3333cccc4444",
    authority: "https://login.microsoftonline.com/common",
    libraryName: "@azure/msal-browser-1p",
    libraryVersion: "5.0.0",
    appName: "my-application",
    appVersion: "1.0.0"
}

Puede encontrar aquí los detalles completos sobre los objetos PerformanceEvents. A continuación se muestra una lista de algunas propiedades importantes:

Property Tipo Description
name string Nombre de la operación, normalmente coincide con el nombre de LA API de nivel superior (por ejemplo acquireTokenSilent, , acquireTokenByCode, ssoSilent).
durationMs number Duración de un extremo a otro en milisegundos para la operación.
success boolean Indica si la operación se realizó correctamente o no.
fromCache boolean Indica si la operación recuperó el resultado de la memoria caché.
correlationId string Id. de correlación usado para la operación (preferiblemente único por solicitud).
libraryVersion string Versión de MSAL.js usada para la operación.
authority string Autoridad usada para la operación.
<internalFunctionName>DurationMs number Duración en milisegundos para una operación interna.

removePerformanceCallback

La addPerformanceCallback API devolverá un identificador de callback que una aplicación puede pasar a PublicClientApplication.removePerformanceCallback para dar de baja esa callback y hacer que deje de recibir eventos de rendimiento. Devolverá un valor booleano que indica si el callback se eliminó correctamente o no.

Example

const msalInstance = new PublicClientApplication(config);

const callbackId: string = msalInstance.addPerformanceCallback((events: PerformanceEvent[]) => {
    events.forEach(event => {
        console.log(event);
    });
});

const removed: boolean = msalInstance.removePerformanceCallback(callbackId);

Medición del rendimiento del explorador

Las medidas de rendimiento del explorador están deshabilitadas de forma predeterminada debido a una sobrecarga significativa de rendimiento que imponen. Las aplicaciones que quieran habilitar las medidas de rendimiento notificadas a la escala de tiempo de rendimiento del explorador deben:

  1. Abrir las herramientas de desarrollo del explorador
    • Exploradores Edge, Chrome y Firefox: presione F12
    • Safari: vaya a las preferencias de Safari (Safari Menu>Preferences), seleccione Advanced Tab y habilite Show features for web developers. Una vez habilitado ese menú, encontrará la consola del desarrollador haciendo clic en Develop>Show Javascript Console
  2. Vaya a Session Storage:
  3. Selección del dominio de destino
  4. Añada la clave msal.browser.performance.enabled a Session Storage, establezca su valor en 1, actualice la página y compruebe la cronología de rendimiento del navegador.