首屏优化方案

165 阅读3分钟

效果展示的过程包括五个阶段:

容器启动--->资源加载--->代码运行--->获取数据--->渲染页面

所以应对在每个阶段有不同的优化策略。

image.png

方案一、容器预建

首先,在容器启动时,提前创建 Webview 容器,可以当需要加载页面的时候就可以直接使用,省去容器初始化时间(十~几百ms)。

  1. 使用 HTML、CSS 和 JavaScript

    • 您可以直接在 HTML 文件中创建一个 <div> 元素作为 Webview 容器。
    • 使用 CSS 来设置容器的样式和布局。
    • 使用 JavaScript 来动态加载 Webview 内容或控制 Webview 的行为。 image.png
  2. 在 Vue 或 React 中创建

    • 如果你在使用 Vue.js 或 React 等现代前端框架,你可以使用相应的组件来创建 Webview 容器。
    • 在 Vue 中,你可以使用 <div> 元素或者专门的组件来作为 Webview 容器。
    • 在 React 中,你可以创建一个组件来承载 Webview 内容。
  3. 使用跨平台开发框架

    • 如果您正在使用跨平台移动应用开发框架(如React Native、Flutter等),这些框架通常会提供原生支持来创建Webview容器,您可以按照它们的文档和示例来创建Webview容器。

不同的场景和需求可能需要不同的方法来创建Webview容器,具体的实现方式取决于您的项目环境和技术栈。如果您有特定的平台或框架的需求,请提供更多信息,以便我能够提供更具体的帮助。

方案二、(优化网络建连/资源分级下发/预加载/离线化)

在资源加载阶段可以通过以下几种方案:

  1. 网络建连优化:优化网络连接,让解析更快、链路更短
  2. 资源离线化:使用本地资源,直接省去网络请求
  3. 资源分级下发:根据机型信息差异化分发离线包,减少包体积
  4. 资源预加载:在当前页面空闲状态加载下一页面资源

方案三、(数据预取/数据缓存)

在数据获取阶段,页面数据通过主接口获取,耗时在数百毫秒到数秒不等,和数据量、网络、服务链路有关。

  • 数据预取:提前获取
  • 数据缓存:优先使用旧数据

方案四、(预渲染)

关于预渲染的实现,主要分为两种:

  • Webview 完全预渲染:额外启动 Webview 容器并完整地加载页面。对性能影响较大,较少使用。
  • NSR(Native Side Render):利用客户端原生做 SSR。核心思路是利用客户端启动一个 JS 引擎,执行数据请求 + HTML 文档输出,并将结果缓存。在后续的页面加载过程中,直接渲染 HTML 文档,并做 hydrate (水合)处理。

(总结)

总结首屏方案.webp NSR 方案相比 Webview 预加载方案更轻量,对系统内存影响较小。

该文档用于自己消化观看理解,详细原文请观看大佬文章

# 前端首屏优化 | 借助客户端能力提升 H5 首屏的 8 个手段