想要测量 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);
测量浏览器性能
默认情况下,浏览器性能测量处于禁用状态,因为它会带来显著的性能开销。 想要启用向浏览器性能时间线报告的性能度量的应用程序应:
- 打开浏览器开发者工具
- Edge、Chrome 和 Firefox 浏览器:按 F12
- Safari:进入 Safari 的首选项(
Safari Menu>Preferences),选择Advanced Tab并启用。Show features for web developers启用该菜单后,单击“开发人员控制台”Develop>Show Javascript Console
- 转到
Session Storage: - 选择目标域
- 将
msal.browser.performance.enabled键Session Storage添加到其中,将其值设置为1,刷新页面并检查浏览器的性能时间线。