测量性能

想要测量 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 名称(例如 acquireTokenSilent, acquireTokenByCode) ssoSilent匹配。
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.enabled 键 Session Storage添加到其中,将其值设置为 1,刷新页面并检查浏览器的性能时间线。