指标事件是由 Monitors 分发,类型为 timing
或 counter
的事件。
当项目开启 SSR 时,我们需要关注 Server 端各阶段耗时,并且有能力对 Server 端的问题进行定位。
基于服务端运行逻辑,Modern.js 在内部提供了以下指标事件:
Key | 描述 |
---|---|
server-handle-request | EdenX Server 处理请求单次耗时 |
ssr-render-shell | [SSR]在使用 Streaming SSR 时, React 将渲染一个套壳(shell)优先传输。这里表明套壳渲染完成时间 |
ssr-render-html | [SSR] React 将组件树渲染成 html 所消耗的时间,通常不会超过 50ms |
server-middleware | EdenX 自定义 Server Middleware 执行总时 |
server-loader | Server 端整体 Data Loader 耗时 |
server-loader-#id | Server 端各个 Data Loader 耗时 |
server-loader-navigation | 前端导航时,服务端 Data Loader 的整体耗时 |
Modenr.js 服务端流程如图所示:
在 Modern.js 中,指标事件也由 LoggerMonitor 处理,它会将指标按照一定格式输出到控制台。
内置的 LoggerMonitor 依赖了 rslog 库。
在 Modern.js 中初始化的 rslog
实例默认在开发环境下会输出 debug
级别及以上的日志,在生产环境下会输出所有日志。而在内置的 LoggerMonitor
中,所有的指标事件都被输出为 Debug 日志。因此如果希望在开发环境查看指标事件的信息,需要添加额外的环境变量。
开发者可以在运行 dev
命令时添加环境变量 DEBUG=true
,如果运行正常,访问后可以在控制台看到如下输出:
在 Modern.js 中,服务端还会额外将各阶段指标作为 Server-Timing 注入到 HTML 响应头中。
在浏览器中,开发者可以通过 Performance API 获取: