H5 优化手段

devtools/2024/11/14 11:53:14/

容器预建

提前创建 Webview 容器

  • 创建时机:闲时创建。Webview 只能在主线程创建,但又不能阻碍主流程,因此需要在 IdleHandler 时机处理。与前端的 requestIdleCallback 、React Scheduler 概念相似。
  • 创建个数:一般仅创建一个,当预创建的 Webview 容器被使用后,再重新预创建(考虑内存状态)
    在这里插入图片描述

网络建连优化

  • 利用 DNS 预解析以及 DNS 缓存,让请求解析更快。
  • 利用 CDN、域名智能调度等方案,自动选择链路较短的服务。

资源离线化

将 H5 资源提前下载(或内置)到 App 中。这样加载资源时就可以通过 App 内部的请求拦截机制转发本地资源,避免网络请求。

资源分级下发

根据用户设备信息(机型、系统等)下发不同的资源包,尽可能减少资源请求大小。(如低端机不使用高清图等)

资源预加载

对于可能会在后续页面中使用到的资源,‌通过预加载机制提前加载这些资源,‌以减少后续页面的加载时间。‌

可使用 Prefetch 实现这个效果,浏览器会在空闲时间下载指定的资源。

<link rel="prefetch" href="/images/big.jpeg" />

数据预取

将数据获取时机前置,通常是与 Webview 初始化并行,并由客户端发起数据请求。
在这里插入图片描述

数据缓存

将页面数据存入缓存;下次进入页面,优先使用缓存数据

对于敏感数据、可能对用户造成较大误解的,不建议缓存,比如积分、金币、红包、金额等与钱有关的数据。

其他相对次要的数据,可以使用缓存,比如收藏记录、粉丝数数据等。

数据缓存还应该设定缓存时效,避免数据差异过大。建议缓存一小时,具体可以根据业务决定。

预渲染 NSR

在上一个页面的空闲状态,客户端进行 NSR 处理,提前请求数据、输出 HTML 文档并缓存。

文件优化

通过压缩CSS、‌JavaScript和HTML文件的大小,‌减少网络传输时间。‌同时,‌将多个CSS和JavaScript文件合并成一个可以减少请求次数,‌加快页面加载速度。‌

图片优化

使用图片压缩工具减小图像文件的大小,‌采用适当的压缩格式(‌如JPEG、‌WebP)‌,‌合理使用CSS Sprite或Base64编码来减少对图片的请求次数。‌

资源缓存优化

设置合适的缓存策略,‌利用浏览器缓存机制,‌尽量减少重复请求,‌提高页面加载速度。‌通过设置HTTP响应头中的Cache-Control和Expires来控制静态资源的缓存时间。‌

延迟加载

对于非关键内容,‌如图片、‌广告等,‌使用懒加载技术,‌延迟加载这些资源,‌当用户滚动到它们所在的位置时再进行加载,‌减少首次加载的时间。‌

DOM操作优化

减少不必要的DOM操作,‌尽量使用批处理和缓存DOM查询结果来提高性能。‌避免频繁的重排和重绘操作,‌可以使用CSS3动画代替JavaScript动画。‌

使用Web Workers和Service Worker

将一些耗时的计算或网络请求任务放到Web Workers中进行并行处理,‌利用Service Worker实现离线缓存、‌消息推送等功能,‌提高应用的响应速度和离线体验。‌

减少重定向和请求次数

避免不必要的重定向和请求,‌合理使用缓存、‌本地存储等技术来减少服务器请求次数。‌

清理无用资源

定期清理不再使用的资源,‌如未使用的JavaScript库、‌样式表和图片等,‌以减少应用的体积。‌

性能监测和优化

使用工具对H5应用进行性能监测和分析,‌发现性能瓶颈,‌并针对性地进行优化,‌保持应用的高性能状态。‌


http://www.ppmy.cn/devtools/92661.html

相关文章

黑盒测试定义:优势、类型和工具

了解黑盒测试的本质&#xff0c;无需深入了解代码内部即可测试功能。 在不了解软件代码结构或实现细节的情况下进行系统测试是软件测试生命周期的重要组成部分。与需要深入了解内部结构和逻辑的白盒测试不同&#xff0c;黑盒测试允许工程师在不了解软件内部工作原理的情况下评估…

uni-app 安卓禁用侧滑返回/虚拟返回(vue3 hook)

[TOC](uni-app 安卓禁用侧滑返回/虚拟返回(vue3 hook)) hook import { onBackPress } from "dcloudio/uni-app"export default function useDisableSwipeBack() {onBackPress((options) > {// 点击虚拟键或者侧滑的时候触发&#xff08;不允许返回&#xff09;i…

什么是流批一体?怎样理解流批一体?

目录 一、流式处理与批量处理概述 1.流式处理 2.批量处理 3.流批一体的定义 二、流批一体的关键特点 三、流批一体的技术实现 四、应用场景 五、实施流批一体的考虑因素 流批一体听起来很简单&#xff0c;但内涵却十分复杂。它包含了计算语义、编程模型、API、调度、执行、shuf…

MySQL是一个开源的关系型数据库管理系统

MySQL是一个开源的关系型数据库管理系统&#xff0c;广泛用于构建各种规模的数据库应用程序。它是一种轻量级且高性能的数据库解决方案&#xff0c;能够处理大规模的数据&#xff0c;并提供了高度可靠的数据存储和访问。 MySQL支持多种操作系统平台&#xff0c;包括Windows、L…

NET8环境WebAPI实现文件的压缩及下载

目录 1、文件下载的原理2、具体实现2.1 提前准备2.2 服务器端的实现2.3 请求端的实现 3、代码下载4、更多特性4.1 单独压缩文件4.2 解析4.2.1 整体解析4.2.2 单个文件解析 4.3 其他4.3.1 设置压缩级别4.3.2 密码保护4.3.3 进度反馈 5、参考资料 1、文件下载的原理 在实际应用环…

鸿蒙AI功能开发【hiai引擎框架-文本转语音】 基础视觉服务

hiai引擎框架-文本转语音 介绍 本示例展示了使用hiai引擎框架提供的文本转语音能力。 本示例展示了对一段中文文本&#xff0c;进行语音合成及播报的能力。 需要使用hiai引擎框架文本转语音接口kit.CoreSpeechKit.d.ts. 效果预览 使用说明&#xff1a; 在手机的主屏幕&am…

20240812 每日AI必读资讯

黑匣子被打开了&#xff01;能玩的Transformer可视化解释工具&#xff1a;Transformer Explainer - 佐治亚理工学院和 IBM 研究院开发一款基于 web 的开源交互式可视化工具「Transformer Explainer」&#xff0c;帮助非专业人士了解 Transformer 的高级模型结构和低级数学运算…

八股训练营|笔记

八股笔记 Day7.18 7.197.20 进程间调度算法 思路&#xff1a;先介绍三种偏向长/短任务的一方的算法&#xff08;先来先服务偏向长&#xff0c;最短任务偏向短&#xff0c;最短剩余时间中和了长任务可能存在的阻塞&#xff0c;但还是偏向短&#xff0c;同时可以提一下两种进程…