微信小程序制作
当前位置:网站首页 > 小程序热文 > 西安微信小程序开发首屏加载过慢的性能优化策略 返回列表

西安微信小程序开发首屏加载过慢的性能优化策略

作者:admin 时间:2023-10-17 浏览量:70

在开发微信小程序的过程中有时候会发现在首次打开微信小程序时首屏的加载速度非常的慢,在这种情况下就会给用户带来不好的体验。有的用户可能会直接退出小程序不在继续访问。那么遇到这种问题我们应该怎么办呢?下面我们就来一起简单的了解一下遇到微信小程序首屏加载过慢的问题如何解决。以下是整合的西安微信小程序开发首屏加载过慢的性能优化策略:

一. 问题描述

01. 问题现象
小程序初次打开首屏加载很慢,已经超出用户等待时长。
02. 理想加载
理想状态加载不超过5s,数据渲染不出现卡顿现象。
二. 加载机制
首屏的加载速度除了和网络有关系,和小程序自身启动机制也有关系,首先要了解小程序的启动机制,小程序的启动分为冷启动和热启动。
01. 冷启动
简介:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。
触发场景:
新用户第一个进入小程序
用户已经进入过小程序,但是小程序被销毁,销毁的原因有,小程序被删除,小程序在后台等待时间过长,自动销毁了。
02. 热启动
简介:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。
触发场景:
用户打开了小程序,在小程序没有被销毁时再次打开小程序,此时小程序还能保存用户上一次的操作状态。
首屏加载慢大部分原因是冷启动时加载的数据过多,需要依赖过多的服务端的接口数据等。
三. 检查
对于程序员来说,遇到问题应该解决问题。首先要要几个基础检查:
01. 检查图片
检查图片包括:
1. 图片是否过大
检查图片属性,如果图片加载过大,就利用工具压缩图片。此时要考虑如果图片像素要求很高,压缩要注意不能失真,其次压缩要注意等比例,留意是否不小心剪裁了图片大小等。
2. 图片懒加载
如果首页要加载的有很多列表或者图片展示,此时要注意图片加载时长,如果超过一定时间,懒加载是个不错的办法。
3. 图片是否可以用cdn托管
对于icon小图标可以放在小程序项目image文件夹里,但是如果图片占用资源,放在cdn托管既可以缩小代码包的大小还可以提升加载效率。
02. 检查首屏接口耗时
一个接口一个接口的排查,在network中查看加载的时间,逐个排查原因,所有请求最好在1s内返回结果。
03. 检查有无错误日志
在JS中如果在同步任务中,一个错误的发生会造成后面整段代码都不执行。
此时应该排查下是否有异常错误,避免出现首屏一直处于加载的状态。必要的时候try catch处理。
04. 检查界面是否使用定时器
定时器一般设置为全局变量,或者定时器和倒计时相关功能绑定,用定时器一定要记得及时回收。
05. 检查基础版本库
如果首页使用里自定义组建,不同颁布要注意基础库要一致。可能不同基础库有些功能的支持条件不一致,要做兼容处理。
四. 优化策略
01. 分包加载
开发者通过在 app.json subpackages 字段声明项目分包结构

{
  "pages":[
    "pages/index",
    "pages/logs"
  ],
  "subpackages": [
    {
      "root": "packageA",
      "pages": [
        "pages/cat",
        "pages/dog"
      ]
    }, {
      "root": "packageB",
      "name": "pack2",
      "pages": [
        "pages/apple",
        "pages/banana"
      ]
    }
  ]
}
分包之后优先加载主tab,二级界面可以理解为按需加载。
分包要注意,主包不能使用二级界面的样式或者js等,因为主包在加载时分包是不加载的。
02. 利用缓存
当小程序被销毁需要重新渲染界面时,此时冷启动会再次请求接口加载数据,可以利用小程序提供了缓存方法wx.setStorage、wx.getStorage将数据存储在本地。
03. 不使用空白屏
所谓空白屏就是当请求接口的数据没有被返回时,整个界面被hidden的,此时给用户的感觉就是白屏。
推荐做法:当数据没有被渲染时展示页面的基本骨架,利用toast提示加载进度,给用户反馈出加载的进度,会延长用户的等待时间。把优先级高的内容做优先展示,缩短白屏时间;
04. 首页架构调整
调整页面展示顺序等,尽量让首屏简洁化。数据展示的尽量精简化。
05. 渲染优化
避免首页多次setData,未绑定的变量或者和界面无关的变量都不要在setData中体现,这样的情况大多出现在一个变量可能在初版的时候使用,下一个版本更改需求,有些变量不需要渲染界面里,但是程序员并有及时删除。
06. 代码优化
第一:在样式上,检查wxss的使用率,这个很重要又经常被忽视,经常发生在不同版本迭代中,需求和样式是经常被改动的,下一个版本更改没有及时删除掉不用的样式,可能有些程序员心里是想着有可能下次被用到,但是记得项目是有git托管的,可以借助git查找之前的代码记录,所以不是此版本的css大胆的删除吧。
第二:在js上,一个js可能到上千行了,这个原因可能和业务逻辑有关,也可能是你写了太多的函数,没有用函数的封装处理。调用接口,没有用Promise封装或者其他封装办法。
联系方式:18066528545   029-89298792

阅读过此文章的读者,还阅读过下面的文章

  • 小程序与原生APP那个好?下面我们就来一起了解一下小程序与原生APP那个好。以下是所整理的小程序与原生App的内容,希望对你有所帮助。

    小程序的优点:

    基于微信平台开发,享受微信自带的流量,这个优点最大
    无需安装,只要打开微信就能用,不占手机内存,体验好
    开发周期段,一般最多一个月就可以上线完成
    开发所需的资金少,所需资金是开发原生APP的一半不到
    小程序名称是唯一的,在微信的搜索里权重很高
    容易上手,只要之前有HTML+CSS+JS基础知识,写小程序基本没有大问题
    基本不需要考虑兼容性问题,只要微信可以正常运行的机器,就可以运行小程序
    发布,审核高效,基本上午发布审核,下午就审核通过,升级简单,支持灰度发布
    开发文档完善,社区活跃
    支持插件式开发,一些基本功能可以开发成插件,供多个小程序使用
    小程序的缺点:
    局限性很强(比如页面大小不能超过1M,不能打开超过5个层级的页面,样式单一,小程序的部分组件已经是成型的- 了,样式不能修改,比如幻灯片,导航)只能依赖于微信依托与微信,无法开发后台管理功能
    不利于推广,推广面窄,不能分享朋友圈,只能分享给朋友,附近小程序推广,其中附加小程序也收到微信限制
    后台调试麻烦,因为API接口必须https请求,且公网地址,也就是说后台代码必须发布到远程服务器上;当然我们可以修改host进行dns映射把远程服务器转到本地,或者开启tomcat远程调试;不管怎么说终归调试比较麻烦
    前台测试有诸多坑,最头疼莫过于模拟器与真机显示不一致
    js引用只能使用绝对路径,不能操作DOM
    原生App优点:
    原生的相应速度快
    对于有无网络操作时,譬如离线操作基本选用原生开发
    需要调用系统硬件的功能(摄像头,拨号,短信蓝牙…)
    在无网络或者弱网情况下体验好
    原生App缺点:
    开发周期长,开发成本高,需要下载
  • 小程序和Vue写法的区别?下面我们就来一起了解一下小程序和Vue写法的区别。以下是我所整理的小程序和Vue写法的区别,希望对你有所帮助。

    遍历的时候:

    • 小程序wx:for=“list”,
    • 而Vue是v-for=“item in list”

    调用data模型(赋值)的时候:

    • 小程序:this.data.item // 调用,

    • 小程序:this.setDate({item:1})//赋值

    • Vue:this.item //调用,

    • Vue:this.item=1 //赋值

  • 小程序调用后台接口遇到那些问题?下面我们就来一起了解一下小程序调用后台接口遇到那些问题。以下是所整理的小程序调用后台接口遇到的问题,希望对你有所帮助。

    数据的大小限制,超过范围会直接导致整个小程序崩溃,除非重启小程序

    小程序不可以直接渲染文章内容这类型的html文本,显示需要借助插件
    注:插件渲染会导致页面加载变慢,建议在后台对文章内容的html进行过滤,后台直接处理批量替换p标签div标签为view标签,然后其他的标签让插件来做
  • 分析微信小程序的优劣势?下面我们就来一起简单的了解一下微信小程序的优劣势。下面是所整理的微信小程序的优劣势,希望对你有所帮助。

    优势:

    容易上手,基础组件库比较全,基本不需要考虑兼容问题
    开发文档比较完善,开发社区比较活跃,支持插件式开发
    良好的用户体验,无需下载,通过搜索和扫一扫就可以打开,打开速度快,安卓上可以添加到桌面,与原生APP差不多
    开发成本比APP要低
    为用户提供良好的保障(小程序发布,严格是审查流程)

    劣势:
    限制较多,页面大小不能超过1M,不能打开超过5个层级的页面
    样式单一,部分组件已经是成型的,样式不可修改,例如:幻灯片,导航
    推广面窄,不能分享朋友圈,只能通过分享给朋友,附加小程序推广
    依托与微信,无法开发后台管理功能
    后台调试麻烦,因为api接口必须https请求且公网地址
    真机测试,个别安卓和苹果表现迥异,例如安卓的定位功能加载很慢

  • 简单描述下微信小程序的 相关文件类型。下面我们就来一起了解一下微信小程序的 相关文件类型。以下是所整理的微信小程序的 相关文件类型,希望对你有所帮助。

    wxml 模板文件,是框架设计的一套标签预言,结合基础组件,事件系统,可以构建出页面的结构

    wxss 样式文件,是一套样式语言,用于描述WXML的组件样式
    js脚本逻辑文件。逻辑处理网络请求
    json配置文件,小程序设置,如页面注册,页面标题及tabBar
    app.json 整个小程序的全局配置,包括:
    pages:\[所有页面路径]
    网络设置(网络超时事件)
    页面表现(页面注册)
    window:(背景色,导航样式,默认标题)
    底部tab等
    app.js 监听并处理小程序的生命周期函数,声明全局变量等
    app.wxss 全局配置的样式文件

  • 请谈谈原生开发小程序,wepy,mpvue的对比?下面我们就来一起了解一下原生开发小程序,wepy,mpvue的对比。个人认为,如果是新项目,且没有旧的 h5 项目迁移,则考虑用小程序原生开发,好处是相比于第三方框架,坑少。

    而如果有 老的 h5 项目是 vue 开发 或者 也有 h5 项目也需要小程序开发,则比较适合 wepy 或者 mpvue 来做迁移或者开发,近期看wepy几乎不更新了,所以推荐美团的mpvue。
    而如果如果团队前端强大,自己做一套框架也没问题。

029-86195145 180 6652 8545 西安嘉瑞德网络科技公司
工作时间:周一到周六 8:30-18:30
邮箱:2528823962@qq.com
QQ:2528823962
地址:陕西省西安市未央元朔路明丰伯马都A座10820室
  • 微信小程序制作微信二维码
    扫码咨询
Copyright © 2015 西安嘉瑞德网络科技有限公司 陕ICP备17015187号-1