返回顶部
首页 > 资讯 > 前端开发 > VUE >微信小程序中如何提高网络速度
  • 553
分享到

微信小程序中如何提高网络速度

2024-04-02 19:04:59 553人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“微信小程序中如何提高网络速度”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序中如何提高网络速度”这篇文章吧。WeTest 导读

这篇文章主要为大家展示了“微信小程序中如何提高网络速度”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序中如何提高网络速度”这篇文章吧。

WeTest 导读

小程序科普类的文章已经很多了,今天这里讲的是针对小程序的优化方法,可以有效提高小程序的响应速度和用户体验。当然,开发体验也提高不少。

1、提高页面加载速度

在小程序这个环境下,怎样提高页面加载速度呢? 这个问题很大,我把问题具体一下,如何缩短从用户点击某个链接,到打开新页面的这段时间? 这里抛一个核心关键点:

从页面响应用户点击行为,开始跳转,到新页面onload事件触发,存在一个延迟,这个延迟大概在100-300ms之间(安卓响应比iOS慢些)。

这个延迟说短不短,我们可以利用这段时间,预先发起新页面所需要的网络请求。这样一来,就节省了100-300ms(或者一个网络请求的时间)。

知道有这个gap后,代码如何实现呢?

说白了,就是实现一个在A页面预加载B页面数据的功能。但而这种跨页面的调用,很容易把逻辑搞复杂,将不同页面的逻辑耦合在一起。所以,我们希望将预加载的逻辑隐藏于无形中,不增加任何的页面间耦合,以及开发复杂度。

下面以腾讯视频小程序为例,讲解下技术实现。

小程序首页:

微信小程序中如何提高网络速度

当用户点击海报图后,会执行以下代码(就一行):

微信小程序中如何提高网络速度

接下来程序会加载播放页:

微信小程序中如何提高网络速度

播放页主要代码:

微信小程序中如何提高网络速度

可以看到,不管是外部页面的调用还是实际逻辑的实现都非常简洁。在第二个页面中,我们扩展了Page的生命周期函数,增加了onNavigate方法。该方法在页面即将被创建但还没开始创建的时候执行。

老司机也许会发现这里有点蹊跷。在首页点击的时候,播放页根本就没有创建,对象都不存在,怎么访问到里面的方法呢?

这里就要说下微信的页面机制。

在小程序启动时,会把所有调用Page()方法的object存在一个队列里(如下图)。每次页面访问的时候,微信会重新创建一个新的对象实例(实际上就是深拷贝)。

也就是说,在A页面在执行点击响应事件的时候,B页面的实例还没创建,这时候调用的onNavigate方法,实际上是Page对象的原型(小程序启动时候创建的那个)。

而接下来马上要被创建的B页面,又是另外一个object。所以,在onNavigate和onLoad方法中,this指针指的不是同一个对象,不能把临时数据存储在当前object身上。因此我们封装了一对全局的缓存方法,$put()和$take()。

微信小程序中如何提高网络速度

为了通用性,Page上用到的公共的方法,比如$route、$put、$take都定义在了一个Page的基类里面。基类还同时保存了所有页面的list,这样就可以做到根据页面名调用具体页面的onNavigate方法。 当然,并不是每个页面都需要实现onNavigate方法,对于没有定义onNavigate方法的,$route函数会跳过预加载环节,直接跳转页面。所以对于开发者来说,不需要关心别的页面实现了什么,对外看来完全透明。

2、用户行为预测

在上面的例子中,我们实现了用户主动点击页面,提前加载下一页面数据的方法。而在某些场景下,用户的行为可以预测,我们可以在用户还没点击的时候就预加载下个页面的数据。让下个页面秒开,进一步提升体验的流畅性。

继续以腾讯视频小程序为例,主界面分为3个页卡(大部分小程序都会这么设计),通过简单的数据分析,发现进入首页的用户有50%会访问第二个页卡。所以预加载第二个页卡的数据可以很大程度提高用户下个点击页面的打开速度。

同样,先看看代码实现。 首页预加载频道页的姿势:

微信小程序中如何提高网络速度

频道页的实现方法:

微信小程序中如何提高网络速度

跟第一个例子类似,这里定义了一个$preLoad()方法,同时给Page扩展了一个onPreload事件。页面调用$preLoad()后,基类会自动找到该页面对应的onPreload函数,通知页面执行预加载操作。 跟第一个例子不同,这里预加载的数据会保存在storage内,因为用户不一定会马上访问页面,而把数据存在全局变量会增加小程序占用的内存。微信会毫不犹豫的把内存占用过大的小程序给杀掉。

也许对于大部分有app开发经验的同学来说,更普遍的做法是先让页面展示上次缓存的数据,再实时拉取新数据,然后刷新页面。这个方法在小程序上也许体验并不太好,原因是小程序的性能以及页面渲染速度都不如原生app。将一个大的data传输给UI层,是一个很重的操作。因此不建议采用这种方法。

3、减少默认data的大小

刚刚说到,页面打开一个新页面时微信会深拷贝一个page对象,因此,应该尽量减少默认data的大小,以及减少对象内的自定义属性。有图有真相:

微信小程序中如何提高网络速度

以一个100个属性的data对象为测试用例,在iphone6上,页面的创建时间会因此增加150ms。

4、组件化方案

微信没有提供小程序的组件化方案(相信一定在实现中)。但开谈不说组件化,写再多代码也枉然。这里演示一个简单的组件化实现。

以腾讯视频播放页为例,页面定义如下:

微信小程序中如何提高网络速度

其中,P()函数是自定义的基类。这是一个非常有用的东西,可以把所有通用的逻辑都写在基类里面,包括pv统计,来源统计,扩展生命周期函数,实现组件化等。

函数第一个参数是页面名称,作为页面的key。第二个是page对象,其中扩展了一个comps数组,里面就是所有要加载的组件。

以播放器组件/comps/player/index.js为例:

微信小程序中如何提高网络速度

组件的定义跟一个普通Page对象一模一样,有data属性,onLoad、onShow等事件,也有页面响应的回调方法。wxml模板里定义的事件和js事件一一对应。

基类做的事情,就是把这些组件对象的属性和方法复制到Page对象上(浅拷贝)。其中data属性会merge到一起。而微信预定义的生命周期函数(包括自己扩展的),则封装成队列按序执行。比如当系统调用onLoad方法时,实际上是执行了所有组件的onLoad方法,最后再执行Page的onLoad。

以上是代码部分,至于wxml模板和wxss部分,就要手工import过去了。

wxml:

微信小程序中如何提高网络速度

wxss:

微信小程序中如何提高网络速度

5、其他

虽然小程序已经足够小巧,但启动速度还是有那么2-3秒,无法做到秒开。楼主尝试对小程序的启动时间做优化,但没有找到多少有价值的优化点。单个页面的初始化只需要1-2ms。也许大部分时间消耗在了微信跟服务器端通信的过程中。

所幸,腾讯提供了一个可以自主进行服务器性能测试的环境,用户只需要填写域名和简单的几个参数就可以获知自己的服务器性能情况,目前在腾讯WeTest平台可以免费使用。

以上是“微信小程序中如何提高网络速度”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: 微信小程序中如何提高网络速度

本文链接: https://lsjlt.com/news/69739.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序中如何提高网络速度
    这篇文章主要为大家展示了“微信小程序中如何提高网络速度”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序中如何提高网络速度”这篇文章吧。WeTest 导读...
    99+
    2024-04-02
  • 微信小程序如何获取图片宽度与高度
    起源 最近在做A需求, 其中有个小功能点描述如下: 从配置端返回张图片, 期望宽度不变(750)、高度根据图片自适应. 我以为的 // 为便于讲解, 将css作为style属...
    99+
    2024-04-02
  • 微信小程序如何让页面高度为屏幕的高度
    微信小程序设置页面高度为屏幕高度的方法进入微信开发者工具,打开小程序项目文件,在项目文件中,查找并打开utlls/app.json文件;最后,app.json文件打开后,设置page的高度为100%即可;.page{height:100vh...
    99+
    2024-04-02
  • 微信小程序中如何监听网络状态变化
    这篇“微信小程序中如何监听网络状态变化”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“微信小程序中如何监听网络状态变化”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下...
    99+
    2023-06-26
  • 微信小程序中如何使用wx.getNetworkType获取网络类型
    这篇“微信小程序中如何使用wx.getNetworkType获取网络类型”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“微信小程序中如何使用wx.getNetworkType获取网络类型”,给大家总结了以下内容,具有一定借鉴价...
    99+
    2023-06-26
  • 微信小程序中如何设置屏幕亮度
    本文将为大家详细介绍“微信小程序中如何设置屏幕亮度”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“微信小程序中如何设置屏幕亮度”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知...
    99+
    2023-06-26
  • 微信小程序如何动态设置图片的高度和宽度
    这篇文章主要介绍了微信小程序如何动态设置图片的高度和宽度,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言:在小程序布局中,如果图片不是固定...
    99+
    2024-04-02
  • 微信小程序中如何实现圆形进度条
    这篇文章主要为大家展示了“微信小程序中如何实现圆形进度条”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序中如何实现圆形进度条”这篇文章吧。需求概要小程序...
    99+
    2024-04-02
  • 微信小程序如何修改数组长度
    小编给大家分享一下微信小程序如何修改数组长度,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序内数组重新修改长度,使用se...
    99+
    2024-04-02
  • 微信小程序怎么实现网络请求
    这篇文章主要介绍“微信小程序怎么实现网络请求”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序怎么实现网络请求”文章能帮助大家解决问题。最近微信小程序开始开放测试了,小程序提供了很多api,极...
    99+
    2023-06-26
  • 微信小程序中如何实现微信支付
    微信支付是微信公众平台提供的一种在线支付服务,可以为用户提供快速、方便、安全的支付体验。而在微信小程序中实现微信支付,则可以为应用程序提供更多的功能和服务,提高用户体验和商业价值。因此,在本文中,我们将介绍如何在微信小程序中实现微信支付。 ...
    99+
    2023-08-16
    微信小程序 微信 小程序 前端 javascript
  • 微信小程序中如何开发
    这篇文章主要介绍了微信小程序中如何开发,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、序微信小程序,估计大家都不陌生,现在应用场景特别多。...
    99+
    2024-04-02
  • 如何提高网站访问速度
    这篇文章主要介绍了如何提高网站访问速度,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.把你的 .js 库文件地址替换成 Google CDN的地址:(google apis...
    99+
    2023-06-08
  • 如何提高网页加载速度
    本篇内容主要讲解“如何提高网页加载速度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何提高网页加载速度”吧!网页加载提速之 – 优化网页图片文件 你的网页一定有图片,加载一...
    99+
    2023-06-08
  • 怎么精确计算微信小程序scrollview高度
    这篇文章主要介绍了怎么精确计算微信小程序scrollview高度的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么精确计算微信小程序scrollview高度文章都会有所收获,下面我们一起来看看吧。一、布局分析,...
    99+
    2023-06-26
  • 【小程序】微信小程序如何获取微信公众号openid?
    一图总览 大家可以先看看下面的流程图,来了解笔者想实现的功能,简单来说就是两个不同主体间的小程序与公众号该如何产生关联。 注:为什么这里要强调不同主体呢,因为同主体的小程序与公众号是可以通过unionId来进行关联绑定。 ...
    99+
    2023-08-19
    微信小程序 小程序 微信
  • 微信小程序如何实现动态改变view标签宽度和高度
    这篇文章主要为大家展示了“微信小程序如何实现动态改变view标签宽度和高度”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序如何实现动态改变view标签宽...
    99+
    2024-04-02
  • 如何提高外国网络服务器的访问速度
    提高外国网络服务器访问速度的方法:1、访问速度和访问距离有关,选择离大陆较近的外国服务器,访问速度会比较快;2、优化网站架构,网站内容越少,加载速度越快;3、保证有充足的带宽,以应对访问人数过多造成网站访问慢的情况;4、做CDN加速,能有效...
    99+
    2024-04-02
  • 怎么在微信小程序中获取图片的宽度与高度
    这篇文章给大家介绍怎么在微信小程序中获取图片的宽度与高度,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。重点: 在图片加载完成后获取对应的图片信息.经查小程序开发文档后发现, 有提供加载成功的回调, 如下:演示Demo如...
    99+
    2023-06-08
  • 提高微信小程序开发效率的方法
    小编给大家分享一下提高微信小程序开发效率的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序小结  在接触的微信小程序开发过程中,不难发现微信小程序为了...
    99+
    2023-06-14
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作