测量性能

想要测量 MSAL.js 中身份验证流性能的应用程序可以手动执行此操作,或使用库本身采取的性能措施。 要使用性能测量数据,需要在 遥测配置选项 中设置性能客户端并添加性能回调函数。

设置遥测性能客户端

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

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

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

添加性能回调

应用程序可以注册回调,以接收由该库采集的性能测量数据。 这些度量将包括顶级 API 的端到端度量,以及重要内部 API 的度量。

Microsoft 第一方应用的注意事项:我们将发布 @azure/msal-browser 的内部版本,该版本已进行检测以捕获此遥测数据。 有关详细信息,请与我们联系。

示例

const msalInstance = new PublicClientApplication(config);

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

示例事件:

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

可以在PerformanceEvents找到对象的完整详细信息。 下面是一些值得注意的属性的列表:

Property 类型 Description
name string 操作的名称,通常与顶级 API 名称(例如 acquireTokenSilentacquireTokenByCodessoSilent匹配。
durationMs number 操作的端到端持续时间(以毫秒为单位)。
success boolean 操作是否成功。
fromCache boolean 操作是否从缓存中检索了结果。
correlationId string 用于该操作的关联 ID(最好对每个请求都唯一)。
libraryVersion string 用于操作的 MSAL.js 版本。
authority string 用于该操作的授权信息。
<internalFunctionName>DurationMs number 内部操作的持续时间(以毫秒为单位)。

removePerformanceCallback

addPerformanceCallback API 将返回回调 ID,应用程序可以传递给PublicClientApplication.removePerformanceCallback该 ID 以从接收性能事件中注销该回调。 它将返回一个布尔值,该值指示是否已成功删除回调。

示例

const msalInstance = new PublicClientApplication(config);

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

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

测量浏览器性能

默认情况下,浏览器性能测量处于禁用状态,因为它会带来显著的性能开销。 想要启用向浏览器性能时间线报告的性能度量的应用程序应:

  1. 打开浏览器开发者工具
    • Edge、Chrome 和 Firefox 浏览器:按 F12
    • Safari:进入 Safari 的首选项(Safari Menu>Preferences),选择Advanced Tab并启用。Show features for web developers 启用该菜单后,单击“开发人员控制台” Develop>Show Javascript Console
  2. 转到 Session Storage
    • Edge
    • Firefox
    • Safari:导航到 Storage 选项卡并展开 Session Storage
  3. 选择目标域
  4. msal.browser.performance.enabledSession Storage添加到其中,将其值设置为 1,刷新页面并检查浏览器的性能时间线。