Mesure des performances

Les applications qui souhaitent mesurer les performances des flux d’authentification dans MSAL.js peuvent le faire manuellement ou consommer les mesures de performances prises par la bibliothèque elle-même. L’utilisation de mesures de performances nécessite de définir le client de performances dans les options de configuration de télémétrie et d’ajouter un rappel de performances.

Définir le client de performances de télémétrie

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

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

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

Ajouter une fonction de rappel de performance

Les applications peuvent inscrire un rappel pour recevoir les mesures de performances prises par la bibliothèque. Ces mesures incluent des mesures de bout en bout pour les API de niveau supérieur, ainsi que des mesures pour les API internes importantes.

Remarque pour les applications Microsoft propriétaires : nous publierons une version interne de @azure/msal-browser déjà instrumentée pour collecter cette télémétrie. Pour plus d’informations, contactez-nous.

Example

const msalInstance = new PublicClientApplication(config);

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

Exemple d’événement :

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"
}

Vous trouverez PerformanceEvents les détails complets des objets. Voici une liste de certaines propriétés notables :

Property Type Description
name string Nom de l’opération, correspond généralement au nom de l’API de niveau supérieur (par exempleacquireTokenSilent, , acquireTokenByCodessoSilent).
durationMs number Durée de bout en bout en millisecondes pour l’opération.
success boolean Indique si l’opération a réussi ou non.
fromCache boolean Indique si l’opération a récupéré le résultat à partir du cache.
correlationId string ID de corrélation utilisé pour l’opération (de préférence unique par requête).
libraryVersion string Version de MSAL.js utilisée pour l’opération.
authority string Autorité utilisée pour l’opération.
<internalFunctionName>DurationMs number Durée en millisecondes pour une opération interne.

removePerformanceCallback

L’API addPerformanceCallback renverra un ID de rappel, qu’une application peut transmettre à PublicClientApplication.removePerformanceCallback pour désinscrire ce rappel afin qu’il ne reçoive plus d’événements de performance. Elle retourne une valeur booléenne indiquant si le rappel a été supprimé avec succès ou non.

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);

Mesure des performances du navigateur

Les mesures de performances du navigateur sont désactivées par défaut en raison d’une surcharge significative des performances qu’elles imposent. Les applications qui souhaitent activer les mesures de performances signalées à la chronologie des performances du navigateur doivent :

  1. Ouvrir les outils de développement du navigateur
    • Navigateurs Edge, Chrome et Firefox : appuyez sur F12
    • Safari : accédez aux préférences de Safari (Safari Menu>Preferences), sélectionnez l’option Advanced Tab et activez Show features for web developers. Une fois ce menu activé, vous trouverez la console du développeur en cliquant sur Develop>Show Javascript Console
  2. Accédez à Session Storage:
    • Edge
    • Chrome
    • Firefox
    • Safari : accédez à l’onglet Storage et développez Session Storage
  3. Sélectionner le domaine cible
  4. Ajoutez la clé msal.browser.performance.enabled à Session Storage, définissez sa valeur sur 1, rafraîchissez la page et vérifiez la chronologie des performances dans le navigateur.