HarmonyOSWeb场景性能优化指导鸿蒙开发者社区

在移动互联网时代,应用的页面渲染速度对于用户体验至关重要。相对于原生页面,Web页面的性能存在多方面的技术挑战。本文以HarmonyOS的ArkWeb组件为基础,介绍了Web页面加载中的影响因素以及对应的优化方案。

二、Web页面加载性能优化指导(一)Web页面加载流程Web页面加载包含网络连接、资源下载、DOM解析、JavaScript代码编译执行和渲染等关键环节,本文主要针对网络连接、资源下载和完整页面渲染这些关键节点的耗时进行优化。

预连接:预连接包含预解析的步骤,可以在用户请求页面之前提前进行DNS解析和socket连接建立,这样当用户真正请求页面时,服务器和浏览器之间已经建立好了连接,可以直接传输数据,减少了网络延迟,提升了页面加载速度。

预下载:预下载指在页面加载之前提前下载所需的资源,以避免在页面加载过程中资源下载导致的阻塞和耗时。通过预下载,可以在浏览器加载页面时,提前获取到所需的资源如图片、CSS文件、JavaScript文件等。通过提前下载这些资源,可以避免在页面加载时因为资源未加载完成而导致页面渲染延迟的情况发生。通过合理地使用预下载技术,用户在访问页面时可以更快地看到页面内容,提高整体性能,提升用户体验。

预取POST:预取POST指当即将加载的Web页面中存在POST请求且POST请求耗时较长时,可对POST请求进行预获取,消除等待POST请求数据下载完成的耗时,当用户真正发起POST请求时,进行拦截替换,加快页面加载速度,提高用户体验。

(三)预解析和预连接优化原理介绍如下图所示,在应用启动和UIAbility的onCreate生命周期后,Web组件才能进行初始化和运行。在ArkWeb组件运行阶段,会经过onAppear、load、onPageBegin、onPageEnd步骤。预解析、预连接优化适用于Web页面启动和跳转场景,例如,应用启动时需要加载Web首页。当开发者已经创建一个ArkWeb组件的实例后,可以选择不同时机对当前ArkWeb组件设置URL并进行预解析、预连接:

(五)预渲染优化原理介绍

预渲染优化适用于Web页面启动和跳转场景,例如,进入首页后,跳转到其他子页。与预连接、预下载不同的是,预渲染需要开发者额外创建一个新的ArkWeb组件,并在后台对其进行预渲染,此时该组件并不会立刻挂载到组件树上,即不会对用户呈现(组件状态为Hidden和InActive),开发者可以在后续使用中按需动态挂载。

具体原理如下图所示,首先需要定义一个自定义组件封装ArkWeb组件,该ArkWeb组件被离线创建,被包含在一个无状态的节点NodeContainer中,并与相应的NodeController绑定。该ArkWeb组件在后台完成预渲染后,在需要展示该ArkWeb组件时,再通过NodeController将其挂载到ViewTree的NodeContainer中,即通过NodeController绑定到对应的NodeContainer组件。预渲染通用实现的步骤如下:

如果是应用首页,推荐在ArkWeb组件创建后或者提前初始化Web内核后,对首页的POST请求进行预取,如XComponent.onCreate()、自定义组件的生命周期函数aboutToAppear()。当前页面完成加载后,可以对用户下一步可能点击页面的POST请求进行预取,推荐在Web组件的生命周期函数onPageEnd()及后续时机进行。(七)预编译JavaScript生成字节码缓存(CodeCache)原理介绍

开发者需要创建一个无需渲染的离线Web组件,用于进行预编译,在预编译结束后使用其他Web组件加载对应的业务网页。

(八)资源拦截替换的JavaScript生成字节码缓存(CodeCache)原理介绍

开发者首先需要在Web组件运行前,向Web组件注册自定义协议。

其次需要拦截自定义协议的JavaScript,设置ResponseData和ResponseDataID。

(九)离线资源免拦截注入原理介绍

说明

开发者需创建一个无需渲染的离线Web组件,用于将资源注入到内存缓存中,使用其他Web组件加载对应的业务网页。仅使用HTTP或HTTPS协议请求的资源可被注入进内存缓存。内存缓存中的资源由内核自动管理,当注入的资源过多导致内存压力过大,内核自动释放未使用的资源,应避免注入大量资源到内存缓存中。正常情况下,资源的有效期由提供的Cache-Control或Expires响应头控制其有效期,默认的有效期为86400秒,即1天。资源的MIMEType通过提供的参数中的Content-Type响应头配置,Content-Type需符合标准,否则无法正常使用,MODULE_JS必须提供有效的MIMEType,其他类型可不提供。仅支持通过HTML中的标签加载。如果业务网页中的script标签使用了crossorigin属性,则必须在接口的responseHeaders参数中设置Cross-Origin响应头的值为anoymous或use-credentials。当调用webview.WebviewController.SetRenderProcessMode(web_webview.RenderProcessMode.MULTIPLE)接口后,应用会启动多渲染进程模式,此方案在此场景下不会生效。单次调用最大支持注入30个资源,单个资源最大支持10Mb。(十)资源拦截替换加速原理介绍

资源拦截替换加速在原本的资源拦截替换接口基础上新增支持了ArrayBuffer格式的入参,开发者无需在应用侧进行ArrayBuffer到String格式的转换,可直接使用ArrayBuffer格式的数据进行拦截替换。

文中提供了预连接、预下载、预渲染、预取POST、预编译等多种常见的优化方法,指导开发者优化Web页面的加载速度。这些方法可以有效提高应用流畅度、提升用户体验。

THE END
1.Web端测试点合集Web端测试点合集 多角度考虑【功能、性能、兼容性、可靠性、易用性、安全性、异常、UI】 兼容性 分辨率 浏览器(内核不同) ①、谷歌 ②、ie:ie7, ie8 , ie9,ie11 ③、火狐 性能 客户端性:响应时间 服务器 ①、容量 ②、负载 ③、压力 ④、并发https://blog.csdn.net/m0_72732835/article/details/144273142
2.《web前端性能优化》摘要响应:文本输入,按钮单击等操作必须在100ms内反馈,超过100ms用户会感知到轻微延迟。 动画:滚动,触摸拖动等UI特效,虽然人眼仅能分辨30帧的差别,但要尽力达到60fps的帧率才有更好的流畅体验,一帧时间约16ms,除去浏览器绘制新帧的时间,留给代码执行的时间约10ms。 https://zhuanlan.zhihu.com/p/644497435
3.浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试搞懂现代Web端即时通讯技术一文就够:WebSocket、socket.io、SSE 4、项目整体测试过程概览 先从一张图看看我们在项目中的整体测试过程: 5、前置测试阶段 整体测试过程主要有三个测试阶段,“前置测试阶段”、“功能测试阶段”与“上线监控阶段” 所谓“前置测试阶段”就是在开发的过程中进行的测试。首先在需求评审完成https://developer.aliyun.com/article/1644021
4.网页端与移动端:设计开发与用户体验的深度剖析与网页端相比,移动端网络环境更加复杂多变。2G、3G、4G等多种网络并存,网络不稳定对页面性能构成挑战。因此,开发者需优化页面资源加载和缓存策略,确保页面在网络不稳定情况下仍能正常访问和快速响应。 技术选型 网页端与移动端在技术选型上也存在差异。网页端开发通常采用HTML、CSS、JavaScript等前端技术,而移动端则更https://www.pbids.com/aboutUs/pbidsNews/1861322364530298880
5.Java面试题及答案整理(2024年12月最新版,持续更新)春招金三银四快到了,发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全~ 这套面试文档包含了:Java基础、JVM、多线程&并发、spring、mybatis、springboot、MySQL、springcloud、Dubbo、Nginx、MQ、数据结构与算法、Linux、Zookeeper、Redis篇、分布式、网络篇、设计模式、maven篇、Elashttps://www.bilibili.com/opus/1007073013763407872
6.web前端自我介绍(精选11篇)篇2:web前端自我介绍 姓名:XXX 出生年月:XXXX年X月 名族:X族 政治面貌:XXXX Q Q:xxx 联系电话:xxx 博客:xxxx 教育背景 时间:20XX/0X---20XX/0X 学校:XXXX大学 专业:XXXX 学历:本科 主修课程:XXXXXXXXXXXXXXXXXXXXXXXX 获得奖励:XX一等奖、XX国家奖学金 在校https://www.360wenmi.com/f/filenoehmr3y.html
7.Loadrunner性能指标分析控件新闻说明:网络延迟时间的曲线突起显示有网络故障。 4.Network Sub-Path Time 说明:网络Sub-Path的时间曲线跳跃式的突起证明存在网络故障。 四、确定性能问题是在网络端还是服务端 1.Web Page Breakdown(页面分解总图) “页面分解”显示某一具体事务在测试过程的响应情况,进而分析相关的事务运行是否正常。可以按下面四种方https://www.evget.com/article/2016/6/17/24263.html
8.web前端面试问什么常见问题是web应用程序的传输协议,它提供了双向的,按序到达的数据流。他是一个HTML5协议,websocket链接是持久的,通过在客户端和服务器之间保持双向链接,服务器的更新可以被及时推送给客户端,而不需要客户端以一定的时间去轮询 6、Doctype作用?严格模式与混杂模式如果区分?意义? https://www.php.cn/faq/417738.html
9.2023Web前端开发面试手册番外:所以 HTML5 是HTML的新一代标准, 所谓的 H5 工程师这一词, 其实是国产词, 泛指新一代的web开发工程师, 具体H5工程师, 做什么工作方向, 还是要看需求 (比如: 移动端开发, PC端网页开发, H5小游戏开发…) 3. 前缀为data-开头的元素属性是什么? http://www.xxmr.cn/news/20406.html
10.软件测试面试必杀篇:2024软件测试面试八股文宝典800道软件测试面试真题,高清打印版打包带走,横扫软件测试面试高频问题,涵盖测试理论、Linux、MySQL、Web测试、接口测试、App测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑思维、人力资源等模块面试题,命中率杠杠的,绝对是测试人的福音,面试者的最强武器。 https://maimai.cn/article/detail?fid=1834543922&efid=hd_N8vt67RYeT16kXOYD4Q
11.web前端性能如何测试?Worktile社区六、移动端性能测试 使用工具来模拟移动设备的网络环境和性能情况,比如使用Chrome开发者工具的Device Mode。 使用工具来监测移动设备上的页面加载时间和响应时间。 总结:以上是一些常用的Web前端性能测试方法,根据具体的需求选择适合的工具和方法进行测试,通过优化性能问题,可以提升网站的用户体验和SEO排名。 https://worktile.com/kb/ask/808704.html
12.安卓App测试简析及工具Emmagee介绍腾讯云开发者社区移动端相关资源利用率 业务响应时间 帧率(主要针对游戏应用) 四、工具Emmagee 4.1 简介 Emmagee是网易杭州研究院qa团队开发的一款用于监控安卓客户端性能的小工具,可以监控指定被测应用在使用过程中器的启动时间、CPU、内存、流量和电量变化情况,用户可自定义配置监控的频率以及性能的实时显示,并最终生成一份性能统计csvhttps://cloud.tencent.com/developer/article/1451870
13.B端产品如何做好移动化设计?我总结了这篇实战经验!优设网通过对比门店通 WEB 端和移动端的界面,虽然在页面结构上两端并不一致,但各自也都符合所在平台用户的操作习惯。以导航为例,在显示区域足够大的 WEB 端,侧边导航结构能确保所有的层级菜单都可以平铺出来,对用户在功能的选择上更加直观。移动化设计时需要遵循不同操作系统的规范,小屏幕更需要将信息进行聚焦,「更多」https://www.uisdc.com/b-end-product-mobility
14.保山中医药高等专科学校研讨互动智慧教室及多媒体智慧教室设备签到时间自动保存,方便后期查阅;签到有误的学生、教师能在课中及时修正,也可以在课后通过教师移动端或WEB端修正。系统具备2次签到功能。 4.学生加入方式:根据学校选择的系统架构不同,学生具有通过教务数据对接和通过管理员,教师加入,学生自己申请加入4种方式;老师可以设置学生申请加入课堂的权限。 5.实现与老师云端https://aiqicha.baidu.com/xbb/f9b8322e3d62ab9fbbc1f456f9b48f54d9a4dd10?source=seo
15.沈阳市装备制造工程学校校园一体化管理平台(含教学资源库)招标移动端支持IOS5.0以上版本; (略) ; 系统在版本升级中保证接口协议、功能不发生变化。 系统性能要求 系统运行支持至少*级注册用户量。 支持5000以上用户同时使用。 支持1000以上并发用户量。 系统保证7×24小时运行。 普通页面响应时间,小于1秒,最大不超过5秒。 https://m.bidcenter.com.cn/news-1-198837090.html
16.天津web前端招聘(工资待遇要求)奥特赛斯(天津)自动化技术有限公司奥特赛斯(天津)自动化技术有限公司 web前端 工资按经验统计,3-5年工资¥9.0K。 web前端 招聘地区:主要分布在天津 天津 ¥9.0K 100%(1) 展开更多 奥特赛斯(天津)自动化技术有限公司 web前端 在哪些城市有办公地点? 主要分布如下:天津占100%,想知道其他城市分别占比多少?请点击该模块查看,统计依赖近一年https://www.jobui.com/company/17210301/salary/j/webqianduan/
17.前端实现电子签名(web移动端)通用的实战过程javascript技巧这里我们在监听鼠标按下(mousedown)(web端)/触摸开始(touchstart)的时候进行初始化,事件监听采用addEventListener。 1 2 // 创建鼠标/手势按下监听器 window.addEventListener(mobileStatus ? "touchstart" : "mousedown", init) 三元判断说明: 这里当mobileStatus为true时则表示为移动端,反之则为web端,后续使用到的https://www.jb51.net/article/269747.htm
18.web与移动端h5页面加载时间分析移动端h5性能测试 打开手机usb调试 如果是想调试混合app的webview,请打开: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { MtcWebView.setWebContentsDebuggingEnabled(true); } 手机连接电脑后,打开chrome,输入chrome://inspect/#devices https://www.jianshu.com/p/60b2b4896637
19.哔哩哔哩技术–TakinTalks稳定性技术交流平台为了满足不同创作者的需求,B站提供了多种投稿渠道,包括移动端的粉大加号、必剪APP,以及Web端和PC端的上传方式,确保创作者可以随时随地上传自己的作品。同时,B站的内容来源多样化,既有用户生成内容(UGC),也有专业生成内容(PGC),以及商业合作稿件等。这些内容通过分区品类、话题和标签等多维度进行分类,以满足不同用户https://news.shulie.io/?feed=rss2&cat=249
20.H5Media入门Demo语音视频桌面基础功能演示此Demo的源码分为三个部分,分别是服务端,PC端Web(横版)和手机端Web(竖版)。接下来首先来看移动端Web的运行效果。(1)首先是登录界面,在登录界面有三个输入框,依次为服务器IP、用户账号和用户密码,在本Demo中,用户账号和用户密码均可随便填写。 (2)接下来是首页界面,首页界面有一个已连接的提示框,代表的意思http://blog.oraycn.com/H5Media_Demo01.aspx
21.我的前端之路:工具化与工程化Web前端接下来的几年间随着互联网的发展与REST等架构标准的提出,前后端分离与富客户端的概念日渐为人认同,我们需要在语言与基础的API上进行扩充,这个阶段出现了以jQuery为代表的一系列前端辅助工具。2009年以来,智能手机开发普及,移动端大浪潮势不可挡,SPA单页应用的设计理念也大行其道,相关联的前端模块化、组件化、响应式https://www.iteye.com/news/32054
22.H5缓存机制浅析移动端Web加载性能优化下面我们首先分析各种缓存机制的原理、用法及特点;然后针对Anroid移动端Web性能加载优化的需求,看如果利用适当缓存机制来提高Web的加载性能。 2 H5缓存机制原理分析 2.1 浏览器缓存机制 浏览器缓存机制是指通过HTTP协议头里的Cache-Control(或Expires)和Last-Modified(或Etag)等字段来控制文件缓存的机制。这应该是WEB中最https://www.thinkphp.cn/topic/66501.html
23.移动端H5页面开发坑点指南学科资讯在平时的H5移动端开发时,我们难免会遇到各种各样的坑点,这篇文章就带着大家来看看怎么解决,文章较长,建议收藏方便以后查阅! 前方高能! canvas在retina屏模糊 只需要将画笔根据像素比缩放即可 run(canvasEl) { const canvas = canvasEl; const ctx = canvas.getContext('2d'); https://www.itsource.cn/web/news/2183.html
24.GitHublxxf/TimLiufirebase-ios-sdk - Firebase是一家实时后端数据库创业公司,它能帮助开发者很快的写出Web端和移动端的应用。 自2014年10月Google收购Firebase以来,用户可以在更方便地使用Firebase的同时,结合Google的云服务. sqlitebrowser - Official home of the DB Browser for SQLite (DB4S) project. Previously known as "SQLithttps://github.com/lxxf/TimLiu-iOS/
25.企业办公软件SaaS软件(系统)服务企业服务所有设备自适应,Web端、PC端以及移动端多平台数据自动同步,实现数据无缝对接,随时随地访问云端文件,轻松实现移动办公。 便捷分享,随时随地与他人共享文件提供多种分享模式,提高文件交互效率。支持外链分享,不仅可以分享公共链接和还可以分享私密链接;支持文件共享,可以按不同的操作权限共享给指定的团队成员;支持内部收集,https://36kr.com/project-4/
26.测试工程师常见面试题适应:web端开发,移动端开发,跨平台应用开发 优点:遵循MVVM模式,体积小,运输效率高,实现了双向绑定,简化DOM操作 借鉴:angular的模板和数据绑定,react的组件化和虚拟DOM技术 二、Cookie&Session&localstorage 三、Cookie和Session别 (1)cookie数据存放在客户的浏览器上,session数据放在服务器上 http://it.en369.cn/jiaocheng/1725918329a577201.html