Lynx 页面展示之前需要完成包括容器初始化、准备 TemplateBundle 等初始化工作。
如下图所示是页面显示前必须经过的初始化阶段,包括了容器、LynxView 和 Background Thread Runtime 三部分的初始化耗时。Performance API 提供了 InitContainerEntry、InitLynxviewEntry 和 InitBackgroundRuntimeEntry 来描述这些阶段的关键时刻。你可以任意组合这些性能数据进行整个初始化阶段的具体分析。

即使这些准备工作发生在页面渲染之前,它们性能好坏也对用户体验有直接影响。过慢的初始化速度会导致更晚的渲染,从而导致用户很晚才能看到内容进而 认为应用性能很差。
为了尽可能降低加载阶段的耗时,你可以通过本地缓存、预加载 TemplateBundle 和预创建 LynxView 等手段预先完成这些初始化工作,确保第一时间响应用户交互,提升用户体验。
Lynx 独特的双线程架构允许主线程运行时中执行渲染操作。这使得 Lynx 具备首帧直出 (Instant First-Frame Rendering,IFR) 的特性:Lynx 通过短暂阻塞主线程,确保首帧一次性完整呈现,因为用户不会看到空白,可以给用户带来一种即刻响应的感知体验。
阅读首帧渲染最佳实践来了解如何在首帧渲染有意义的内容。
你可以获取 LoadBundleEntry 来了解首帧渲染的详细时间数据。
很多页面首帧只能展示加载动画或者骨架图,页面通过原生模块或者网络请求获取关键的数据才能完成显示。在这种场景下,读者需要关键的数据更新触发的渲染流程的耗时。
那么读者可以标记 Lynx 流水线来跟踪这次重要的数据更新。标记后,可以获取被标记的 Lynx Pipeline 的详细时间数据。
这次渲染的耗时数据可以通过 PipelineEntry 接口获取。