当前位置: 首页 > news >正文

H5 优化手段

容器预建

提前创建 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应用进行性能监测和分析,‌发现性能瓶颈,‌并针对性地进行优化,‌保持应用的高性能状态。‌

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《新一代数据可视化分析工具应用指南》正式开放下载
  • go语言创建协程
  • 4章7节:用R做数据重塑,行列命名和数据类型转换
  • 【IT行业研究报告】Internet Technology
  • Android网络库:Volley、Retrofit和OkHttp的比较与应用
  • ARM/Linux嵌入式面经(二一):诺瓦科技
  • Spring Boot 的Web开发
  • Linux 下 ETCD 安装、配置与命令使用总结
  • 【Spark集群部署系列二】Spark StandAlone模式介绍和搭建以及使用
  • Docker运行Cassandra集群
  • 如何选择工厂模式或策略模式:Java设计模式实践指南
  • mmdebstrap:创建 Debian 系统 chroot 环境的利器 ️
  • LeetCode138-随机链表的复制--经典OJ题
  • 视频循环存储的实现
  • 嵌入式学习笔记十三——C语言指针变量、一维数组的指针、快速排序
  • [NodeJS] 关于Buffer
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • CSS 专业技巧
  • Fabric架构演变之路
  • Java-详解HashMap
  • js操作时间(持续更新)
  • js对象的深浅拷贝
  • Linux下的乱码问题
  • NSTimer学习笔记
  • Python - 闭包Closure
  • Redis 中的布隆过滤器
  • 老板让我十分钟上手nx-admin
  • 双管齐下,VMware的容器新战略
  • 通过npm或yarn自动生成vue组件
  • 通信类
  • 王永庆:技术创新改变教育未来
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #if 1...#endif
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (javaweb)Http协议
  • (阿里云万网)-域名注册购买实名流程
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转) Face-Resources
  • (转载)Google Chrome调试JS
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • (自适应手机端)行业协会机构网站模板
  • .net core Swagger 过滤部分Api
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net Core 中间件验签