Mierzenie wydajności

Aplikacje, które chcą mierzyć wydajność przepływów uwierzytelniania w MSAL.js, mogą to zrobić ręcznie lub korzystać z miar wydajności podjętych przez samą bibliotekę. Korzystanie z pomiarów wydajności wymaga skonfigurowania klienta wydajności w opcjach konfiguracji telemetrii oraz dodania funkcji wywołania zwrotnego wydajności.

Ustaw klienta telemetrii wydajnościowej

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

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

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

Dodaj funkcję zwrotną wydajności

Aplikacje mogą zarejestrować wywołanie zwrotne w celu odbierania pomiarów wydajności wykonanych przez bibliotekę. Pomiary te obejmują kompleksowe pomiary interfejsów API najwyższego poziomu, a także pomiary ważnych wewnętrznych interfejsów API.

Uwaga dotycząca aplikacji własnych firmy MSFT: udostępnimy wewnętrzną kompilację @azure/msal-browser, która jest już wyposażona w mechanizmy do zbierania tych danych telemetrycznych. Aby uzyskać więcej informacji, skontaktuj się z nami.

Przykład

const msalInstance = new PublicClientApplication(config);

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

Przykładowe zdarzenie:

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

Szczegółowe informacje dotyczące PerformanceEvents obiektów można znaleźć tutaj. Poniżej znajduje się lista niektórych godnych uwagi właściwości:

Property Typ Description
name string Nazwa operacji zwykle odpowiada nazwie interfejsu API najwyższego poziomu (np. acquireTokenSilent, acquireTokenByCode). ssoSilent
durationMs number Całkowity czas trwania operacji w milisekundach.
success boolean Czy operacja zakończyła się pomyślnie, czy nie.
fromCache boolean Czy operacja pobrała wynik z pamięci podręcznej.
correlationId string Identyfikator korelacji używany do operacji (najlepiej unikatowy na żądanie).
libraryVersion string Wersja MSAL.js używana do operacji.
authority string Uprawnienie użyte do wykonania operacji.
<internalFunctionName>DurationMs number Czas trwania w milisekundach dla operacji wewnętrznej.

removePerformanceCallback

Interfejs API addPerformanceCallback zwróci identyfikator funkcji wywołania zwrotnego, który aplikacja może przekazać do PublicClientApplication.removePerformanceCallback, aby wyrejestrować tę funkcję wywołania zwrotnego z odbierania zdarzeń związanych z wydajnością. Zwróci wartość logiczną wskazującą, czy wywołanie zwrotne zostało pomyślnie usunięte.

Przykład

const msalInstance = new PublicClientApplication(config);

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

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

Mierzenie wydajności przeglądarki

Pomiary wydajności przeglądarki są domyślnie wyłączone, ponieważ powodują znaczny narzut na wydajność. Aplikacje, które chcą włączyć pomiary wydajności zgłaszane do osi czasu wydajności przeglądarki, powinny:

  1. Otwórz narzędzia deweloperskie przeglądarki
    • Przeglądarki Edge, Chrome i Firefox: naciśnij klawisz F12
    • Safari: przejdź do preferencji przeglądarki Safari (Safari Menu>Preferences), wybierz pozycję Advanced Tab i włącz .Show features for web developers Po włączeniu tego menu znajdziesz konsolę dewelopera, klikając pozycję Develop>Show Javascript Console
  2. Przejdź do Session Storage:
  3. Wybieranie domeny docelowej
  4. Dodaj klucz msal.browser.performance.enabled do Session Storage, ustaw jego wartość na 1, odśwież stronę i sprawdź oś czasu wydajności w przeglądarce.