SPA(single-page application)应用通过动态更新页面来实现更快速、更流畅的用户体验。与传统的多页面应用程序不同,SPA应用程序不需要在每次用户导航时重新加载整个页面,而是动态加载和更新页面内容。这意味着用户可以更快地交互和导航,而无需在每个页面之间等待加载时间。SPA通常使用前端框架来管理应用程序状态和页面路由。例如Angular、React或Vue。
在监控SPA应用程序时,您需要额外关注以下方面:
配置pageview plugin的routeMode
即可实现SPA路由的监听和上报。
配置示例:
import client from '@apmplus/web' client('init', { ... plugins: { pageview: { routeMode: 'hash', // hash or history } }, ... })
页面性能分为首屏性能和非首屏性能。
@apmplus/web >= 2.0.1 && @apmplus/integrations >= 2.1.0
import client from '@apmplus/web' import { SPALoadPlugin } from '@apmplus/integrations' client('init', { ... plugins: { pageview: { routeMode: 'hash' // 默认是history模式,所以如果是history路由可以无需配置 } }, integrations: [SPALoadPlugin()], // 手动引入SPALoadPlugin })
说明
SPALoadPlugin主要是通过监听路由的变化,观察路由切换后的一系列关于dom变更、资源加载、请求发送等变更事件来寻找一个页面达到稳定态的时间,从而上报SPA_LOAD指标。
// 方案一: 路由切换前调用performanceInit,渲染后调用performanceSend // 路由切换前 client('performanceInit') // SPA 渲染完成后, 调用此方法sdk会帮助计算时间差,然后上报spa_load 性能指标 client('performanceSend') // 方案二: 上报自定义性能指标:手动计算好渲染时间【单位ms】,通过性能的单指标上报协议上报 client('sendCustomPerfMetric', { name: 'spa_load', value: {{渲染时间}} })
手动上报SPA_LOAD有两种方式: