Medir desempenho

As aplicações que pretendem medir o desempenho dos fluxos de autenticação em MSAL.js podem fazê-lo manualmente, ou consumir as medidas de desempenho tomadas pela própria biblioteca. Para utilizar medições de desempenho, é necessário configurar o cliente de desempenho nas opções de configuração de telemetria e adicionar uma função de callback de desempenho.

Definir cliente de desempenho da telemetria

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

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

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

Adicionar chamada de retorno de desempenho

As aplicações podem registar um callback para receber medições de desempenho feitas pela biblioteca. Estas medições incluirão medições de ponta a ponta para APIs de topo, bem como medições para APIs internas importantes.

Nota para aplicações da própria Microsoft: Publicaremos uma versão interna de @azure/msal-browser que já está instrumentada para recolher esta telemetria. Contacte-nos para mais detalhes.

Exemplo

const msalInstance = new PublicClientApplication(config);

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

Exemplo de evento:

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

Os detalhes completos dos PerformanceEvents objetos podem ser encontrados aqui. Segue-se uma lista de algumas propriedades notáveis:

Property Tipo Description
name string O nome da operação, normalmente corresponde ao nome da API de topo (por exemplo, acquireTokenSilent, acquireTokenByCode, ssoSilent).
durationMs number Duração total da operação em milissegundos.
success boolean Quer a operação tenha sido bem-sucedida ou não.
fromCache boolean Se a operação recuperou o resultado do cache.
correlationId string ID de correlação usado para a operação (preferencialmente único por pedido).
libraryVersion string Versão de MSAL.js usada para a operação.
authority string Autoridade usada para a operação.
<internalFunctionName>DurationMs number Duração em milissegundos para uma operação interna.

removePerformanceCallback

A API addPerformanceCallback devolve um ID de callback, que uma aplicação pode passar a PublicClientApplication.removePerformanceCallback para anular o registo desse callback, para que deixe de receber eventos de desempenho. Devolverá um booleano a indicar se o callback foi removido com sucesso ou não.

Exemplo

const msalInstance = new PublicClientApplication(config);

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

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

Medição do desempenho do navegador

As medições de desempenho dos browsers estão desativadas por defeito devido à sobrecarga significativa de desempenho que impõem. As aplicações que pretendam permitir medições de desempenho reportadas na linha temporal de desempenho do navegador devem:

  1. Ferramentas de desenvolvimento de navegadores abertos
    • Navegadores Edge, Chrome e Firefox: pressione F12
    • Safari: vá às preferências do Safari (Safari Menu>Preferences), selecione Advanced Tab e ative Show features for web developers. Assim que esse menu estiver ativado, encontrará a consola de programação clicando em Develop>Show Javascript Console
  2. Aceda a Session Storage:
  3. Selecionar domínio-alvo
  4. Adicione a chave msal.browser.performance.enabled a Session Storage, defina o respetivo valor como 1, atualize a página e verifique a cronologia de desempenho do navegador.