# smart_prerender_framework **Repository Path**: wyfcyx/smart_prerender_framework ## Basic Information - **Project Name**: smart_prerender_framework - **Description**: ArkUI生态下的智能预渲染框架,涵盖用户行为识别、用户行为智能预测和预渲染任务管理三大模块 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 4 - **Created**: 2025-05-16 - **Last Updated**: 2025-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能预渲染框架 `smart_prerender_framework` ## 简介 目前大部分预渲染策略对预渲染时机和内容进行硬编码,预渲染的内容用户不一定访问,在产生了大量功耗开销的同时也未必能提升用户体验。为了解决这个问题,我们提出智能预渲染框架`smart_prerender_framework`(下称“框架”),该框架可以收集并分析用户行为,预测用户接下来点击的内容并基于预测动态调整预渲染时机和内容。经过实验,框架可以显著提升预渲染命中率,可以保证功耗开销稳定转化为相应的用户体验提升。 ## 已覆盖场景 * 列表滑动点击场景 ## 项目介绍 在 HarmonyOS Next 原生应用实际场景中,有很多复杂的组件或内容(如 Web 等),当用户点击时再触发渲染或加载往往会导致响应/完成时延过高,严重影响用户体验。这类问题通常是通过在用户点击之前就预渲染对应内容来解决的。然而,目前绝大部分预渲染策略都是硬编码在某些固定的时间点预渲染固定的内容,就有可能导致硬编码的预渲染时机和内容与用户实际想看的内容不匹配。导致两种问题: 1. 为了保证用户想看的内容被预渲染覆盖,预渲染了过多内容而功耗过高,整机温度无法接受; 2. 为了保证功耗达标,只能预渲染少量内容,导致用户想看的内容未被预渲染覆盖,响应/完成时延高,用户体验差 这些问题的根因是硬编码的预渲染内容往往用户并不会点击到,预渲染命中率低,从而产生了功耗浪费。经过实验,我们发现很多场景下结合用户输入来动态调整预渲染时机和内容,可以有效提升预渲染命中率,在尽可能压低功耗的同时尽可能提升用户体验。为此,我们提出此框架 ,其核心原理是通过收集、分析、预测用户操作,从而提升预渲染命中率。 框架支持的预渲染行为不限于组件的提前加载或渲染,实际可以涵盖任意一种与当前 UI 界面渲染并发进行的计算。 ## 安装方法 ```shell ohpm install @hm_zhihu_commando/smart_prerender_framework ``` ## 约束与限制 **需要 OpenHarmony SDK API Version 12+** Demo 在下述版本验证通过 | 软件 | 版本 | |-----------------|-----------------------------------------------------------------| | DevEco Studio | 5.0.5 Release(Build Version: 5.0.13.200, built on May 13, 2025) | | OpenHarmony SDK | API Version 17 Release(5.0.5.165) | ## example [项目开源仓库](https://gitee.com/wyfcyx/smart_prerender_framework) 自身就是一个支持手机等平台的 ArkTS 工程,可以直接在真机或模拟器上运行。 ## 项目文档 更多文档,请参考项目开源仓库 [文档目录](https://gitee.com/wyfcyx/smart_prerender_framework/tree/master/docs) 。 ## 贡献代码 如果有任何疑问,欢迎随时提 [Issue](https://gitee.com/wyfcyx/smart_prerender_framework/issues) 。 我们也非常期待你的 [Pull Requests](https://gitee.com/wyfcyx/smart_prerender_framework/pulls) ,让我们一起努力不断完善项目! ## 开源协议 本项目基于 [Apache 2.0 许可证](https://www.apache.org/licenses/LICENSE-2.0.html) 开源。