收藏
回答

性能面板的切页面耗时跟PerformanceEntry的route有关系吗?

官方资料:

在 PerformanceEntry 中,name = 'route' 的性能实体,有 startTime、duration、 navigationStart,我想统计页面切换耗时,有一些疑惑:

  1. startTime 是指,触发 wx.switchTab、wx.navigateTo 等路由切换方法的时刻吗?
  2. navigationStart 是指,触发路由切换后,前置环境准备已完成(比如包下载、代码注入),真正要开始切路由的时刻吗?
  3. 路由切换完成的时间应该怎么统计:startTime + duration,还是 navigationStart + duration,还是其它?
  4. 路由切换完成的时刻,跟切换的目标页面的生命周期(page.onLoad, page.onShow, page.onReady)有关系吗?比如,切换完成后,触发 page.onReady。

最后一次编辑于  2022-01-28
回答关注问题邀请回答
收藏

2 个回答

  • Eric Huang
    Eric Huang
    2022-02-18

    startTime 指的是调用路由接口的时间点; navigationStart 是前置条件准备好之后触发的(表示即将要开始路由了); 结束时间是: startTime + duration (这里 duration 是整个路由的耗时); onLoad / onShow 的时机跟 navigationStart 是比较接近的。 onReady 是在页面渲染完成之后触发的,可以对应 firstRender 的时机。

    2022-02-18
    有用 1
    回复 1
    • 弦千
      弦千
      2022-02-18
      这段和我之前的理解一致:startTime 指的是调用路由接口的时间点; navigationStart 是前置条件准备好之后触发的(表示即将要开始路由了); 结束时间是: startTime + duration (这里 duration 是整个路由的耗时);


      在实际捕获上报的数据,收到不少(具体百分比没统计) navigationStart < startTime,这算是异常数据吗?还是就是会有这种情况?
      2022-02-18
      回复
  • 弦千
    弦千
    2022-02-17

    疑惑2中,关于 navigationStart,结合 firstRender 来看,是逻辑层收到路由事件,也是真正路由开始响应时间。但对于这里的 startTime 和 navigationStart 区别的理解,还是没有本质的帮助。

    2022-02-17
    有用
    回复 1
    • 弦千
      弦千
      2022-02-17
      按实际切换流程,有以下几个步骤:
      1. 用户点击视图(有多种交互可以触发,我们以点击为例)
      2. 逻辑层收到点击事件
      3. 点击事件里面,调用路由切换方法
      4. 小程序系统层处理路由切换方法
      5. 包下载(非必须)
      6. 代码注入(非必须)
      7. 开始路由跳转
      8. 跳转完成


      可以按照这个流程回答下,我上面的疑问。
      2022-02-17
      回复
登录 后发表内容