HarmonyOS 鸿蒙Next web组件加载H5页面过慢如何监测

HarmonyOS 鸿蒙Next web组件加载H5页面过慢如何监测 【设备信息】Mate60

【API版本】Api13

【DevEco Studio版本】5.0.7.200

【问题描述】

web组件加载H5页面过慢如何监测加载过程,加载,重定向和加载失败?如何监测加载,绘制,H5加载性能相关数据呢?怎么监测 网络连接,资源下载,创建render,DOM解析这些阶段?

有人了解吗?

3 回复

Web组件如何判断网址是否加载成功 参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkweb-17-V5

可以根据回调函数onHttpErrorReceive判断加载是否报错 也可以用拦截api进行url拦截onLoadIntercept 使用Devtools工具调试前端页面

onProgressChange进度检测

Web场景性能优化指导

[https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-web-develop-optimization-V5]

如何监测网络连接鸿蒙有专门api getAllNetsSync

[https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-net-connection-V5#connectiongetallnetssync10] 网页无网也会触发onErrorReceive回调

监听页面触发的下载 web资源下载

更多关于HarmonyOS 鸿蒙Next web组件加载H5页面过慢如何监测的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙开发里,Web 组件提供了一系列事件回调函数,借助这些函数能够监测页面加载的不同状态。

Web({
      src: 'https://example.com',
      onLoadStart: () => {
        console.log('页面开始加载');
      },
      onLoadFinish: () => {
        console.log('页面加载完成');
      },
      onLoadError: (errorCode: number, errorMsg: string) => {
        console.log(`页面加载失败,错误码: ${errorCode},错误信息: ${errorMsg}`);
      },
      onPageRedirect: (oldUrl: string, newUrl: string) => {
        console.log(`页面重定向,从 ${oldUrl} 到 ${newUrl}`);
      }
    })

在 H5 页面中可以使用 window.performance 对象来获取性能相关数据,然后通过 Web 组件的 evaluateJs 方法将数据传递给鸿蒙应用。

Web({
      src: 'https://example.com',
      ref: this.webRef,
      onLoadFinish: () => {
        this.webRef.current?.evaluateJs(`
          const performanceData = window.performance.timing;
          {
            'navigationStart': performanceData.navigationStart,
            'domContentLoadedEventEnd': performanceData.domContentLoadedEventEnd,
            'loadEventEnd': performanceData.loadEventEnd
          }
        `, (result: any) => {
          console.log('性能数据:', result);
          if (result) {
            const loadTime = result.loadEventEnd - result.navigationStart;
            console.log(`页面加载耗时: ${loadTime} 毫秒`);
            const domContentLoadTime = result.domContentLoadedEventEnd - result.navigationStart;
            console.log(`DOM 内容加载耗时: ${domContentLoadTime} 毫秒`);
          }
        });
      }
    })
    .width('100%')
    .height('100%')
  }
}

代码解释

  • window.performance.timing 包含了页面加载过程中各个关键时间点的数据。
  • evaluateJs 方法用于在 Web 组件中执行 JavaScript 代码,并获取执行结果。

监测网络连接、资源下载、创建 renderDOM 解析这些阶段

  1. 结合 window.performance 和自定义标记

在 H5 页面中,可以通过自定义标记和 window.performance 来监测各个阶段。

@Entry
@Component
struct WebStageMonitor {
  private webRef: WebRef = new WebRef()

  build() {
    Web({
      src: 'https://example.com',
      ref: this.webRef,
      onLoadFinish: () => {
        this.webRef.current?.evaluateJs(`
          const performanceData = window.performance.timing;
          const networkTime = performanceData.responseStart - performanceData.fetchStart;
          const resourceDownloadTime = performanceData.responseEnd - performanceData.responseStart;
          const domParseTime = performanceData.domInteractive - performanceData.responseEnd;
          {
            'networkTime': networkTime,
            'resourceDownloadTime': resourceDownloadTime,
            'domParseTime': domParseTime
          }
        `, (result: any) => {
          console.log('各阶段耗时:', result);
        });
      }
    })
  }
}
  • networkTime:表示网络连接和请求响应开始的时间差。
  • resourceDownloadTime:表示资源下载的时间。
  • domParseTime:表示 DOM 解析的时间。

在HarmonyOS(鸿蒙Next)中,监测Web组件加载H5页面过慢的问题,可以通过以下方式进行:

  1. 使用Web组件的生命周期回调:鸿蒙提供了Web组件的生命周期回调方法,如onPageStartonPageFinish等。通过这些回调,可以记录页面开始加载和完成加载的时间,从而计算加载时长。

  2. 性能监控工具:鸿蒙提供了性能监控工具,如HiPerf,可以用于监控应用的性能指标,包括Web组件的加载性能。通过HiPerf,可以获取详细的性能数据,如CPU使用率、内存占用等,帮助分析加载慢的原因。

  3. 网络请求监控:使用鸿蒙提供的网络请求监控工具,如HttpClient的日志功能,可以监控H5页面加载过程中的网络请求情况,分析是否存在网络延迟或请求阻塞的问题。

  4. 日志分析:通过鸿蒙的日志系统,记录Web组件加载过程中的关键日志信息,如资源加载时间、JS执行时间等。结合日志分析工具,可以定位加载慢的具体环节。

  5. 使用DevEco Studio的性能分析工具:DevEco Studio提供了性能分析工具,可以实时监控应用的性能表现,包括Web组件的加载性能。通过该工具,可以直观地查看加载过程中的性能瓶颈。

通过以上方法,可以有效地监测和定位鸿蒙Next中Web组件加载H5页面过慢的问题。

回到顶部