VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
荫云优惠活动
wexlayer优惠活动
最新

下面我来一步步讲解一下如何优化小程序。 (实用概述)(如何优化运行缓慢的小程序)

主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情!
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作

如何优化小程序?这篇文章总结了优化小程序的实践,看看小程序可以优化的地方。 希望对您有所帮助!

小程序执行流程

首先整理一下小程序的运行原理,方便大家砍柴。

眼见为实:

小程序有很强的理论支撑,建议大家仔细理解图片内容。 开发和优化方向。 。

优化项

1.合理使用子包

微信小程序的主要特点是启动快。 对于这个功能,官方将包大小限制为最大2M。

分包是小程序优化的重中之重,可以有效提升小程序启动速度和页面打开速度。

套餐分为【主套餐】、【普通分包】、【单个分包】。

[主包]应仅包含启动页面或TabBar页面。

【普通子包】放置TabBar页面以外的页面。 为了减少子包的大小,我们建议根据页面或模块的数量将其拆分为多个子包。 用户只有进入相应的分包页面才会被引导至该页面。 下载这个包也实现了包的按需加载,避免资源浪费。 如果从常规分包页面启动小程序,必须先下载主包,再下载分包。

【独立子包】放置几个高度独立的页面。 从独立子包内的页面启动小程序可以显着加快小程序的启动速度,因为只下载独立子包。 用户进入TabBar页面或其他常规分包页面后返回下载相应的包。

独立的子包不能包含组件、登录等全局的东西,引入其他包的资源会导致错误。

鼓励作者在分包之前清理他们的页面和功能。 分包的限制不是包大小超过2M,而是可以根据任务和功能灵活划分。 在当前正常的网络条件下,下载2M分包和下载500KB分包的用户感知差异可能不是特别大,但在弱网络环境下,这两个原因可能会导致用户长时间出现白屏。 差距巨大(可以说个人经历令人心碎)。

既然包已经拆分了,【提前下载子包】当然是需要的。 您可以遵守官网规则配置用户进入特定页面时预下载的包。

2.按需插入

小程序下载完包后,将打开页面的包中的所有JS、未访问的页面、未使用的自定义内容合并注入。一切。 组件也被注入到运行时环境中。 。 影响注入时间和内存使用。 我们想要的是,当包下载完成后,只注入我们即将打开的页面的代码。

{ "lazyCodeLoading" : "requiredComponents"}

3. 清除 setData。 一些调用原理

小程序运行在微信客户端上。 即wxml、wxs、wxss都运行在客户端。 执行环境分为两个线程,一个渲染线程,一个逻辑线程。 渲染层使用WebView进行渲染,逻辑层使用JSCore执行JS代码。 wxml和wxss工作在渲染线程,wxs工作在逻辑线程。 两个线程之间如何通信?

通过客户端作为中转站进行通信。

渲染层触发事件并响应客户端。 逻辑层通过setData向客户端发送数据,双方的数据都转换为字符串。 发送后,客户端单独响应,但响应不是实时的。 这意味着逻辑层触发的setData页面不会立即更新,渲染层更新之前会有一定的延迟。

模型如图所示。

Native 是客户端。

回到你的问题,setData是在逻辑层调用的,所以渲染层响应是否快取决于数据从逻辑层发送到客户端的效率。 这种传输效率取决于数据的大小。 由于这是您要发送的数据,因此在调用 setData 时应尽可能减少数据传输大小。

Native将wxml转换为js对象,与setData传递的对象进行差异比较,并渲染差异。风景之上。

总结以上原则,调用setData时应遵循几个原则。

应尽可能减少setData所需数据的大小,并保证JSON后的数据大小不超过256 KB。 转换为字符串。 为了减少耗时的增量比较,请避免将不需要渲染的数据传递给 setData(数据未绑定到 wxml)。 避免频繁调用 setData。 这使逻辑层保持忙碌并继续处理 setData 发送队列。 这使您无法处理渲染层响应性、渲染阻塞、页面滞后,甚至无效的 setData。 如果可能的话,可以通过节流等方法进行优化。 尽可能将需要更新的多个数据合并到单个 setData 中,以减少通信过程。 阻止后台页面触发setData也会占用Js线程,导致阻塞,并有可能导致真正需要setData的数据变得无响应。

减少 setData 的数据大小通常在列表场景中完成,并且通常仅更新。 需要更新的下标:

const needRefresh = `list[${index}]`//方法1写入setData({ [needRefresh]: '新值'})//写入方法2 setData( { [ `l ist[${index}]`]: '新值'})//写方法3 setData({ 'list[0]': '新值'})//方法4 write const needRefresh = `list[${index }].disabled`setData({ [needRefresh]: 'new value'}) //写入5个对象更新 setData({ 'personal.name':'xxx'})

4.控制图片尺寸比例

合格的图片必须满足以下两个条件:

图像宽度和高度的乘积。

显示的高度/宽度不得超过原始图像高度/宽度的15%。

这些图片都是取自UI的,所以本次优化我们要做的就是用这两个指标来对抗UI。

祝你好运 ~

上面的第一个与您设备上的 [dpr] 相关。 由于移动设备开发需要了解【dpr】,这里就不详细解释了。

合理利用图片资源。 例如,在 [dpr] 为 2 的设备上,在 60x60 元素区域中显示的图像必须同时考虑清晰度和资源大小。 图像尺寸不能超过 120x120。 同时管理的[dpr]为3台设备且图像不能超过180x180。

所有小程序资源均位于CDN上。 您可以利用CDN的图片云处理能力来控制资源请求。 我们使用七牛云和优拍云如下:

// 七牛云`${_src}?imageMogr2/thumbnail/!${scaleRatio}p`//也拍云`${_src}!/scale/${scaleRatio}`

其他更多关于七牛云处理能力的信息,请访问七牛云官网(https://developer.qiniu.com/)。 dora/8255/the-zoom)合友派云(https://help.upyun.com/knowledge-base/image/)

自定义图像组件 cus-image [ dpr] 为一个对图像进行云处理的小程序。 它还提供了rate属性,可以灵活调整图片大小(开发者需要,因为运营商上传的图片可能会被不同大小的元素区域引用)。

5.避免在短时间内发起大量请求。

wx.request、wx.uploadFile发起的最大并发网络请求数限制。 短命小程序中的wx.downloadFile为10。 如果超过 10 个,请求将被阻止。 最大并发图片请求数为6。

如何定义短持续时间?

【网络请求】大于300毫秒的并发请求数不能超过10个(一般不会出现这个问题,如果您遇到这个问题,我们会及时处理)建议您考虑分页。接口、业务分离或者接口集成。 ) 【图片请求数】同一域名超过100ms的并发图片请求数不超过6个

示例:300ms内发送12个请求,其中300ms内有10个 300ms内完成且仅2个请求已完成。

【解决方案】

应尽可能减少接口请求次数。 图像可以设置为延迟 - 加载。 精灵图像可以用作图标。 将您的图像资源拆分到多个域名。 自定义分片流程以分多个阶段发出请求。 function interelTask​​s(task,wait){ this.data.timer = setInterval(()=>{ task() }, wait)}async function task(promiseList = []){ const result = wait PromiseList.all(promiseList) / / 做一些事情}

6.耗时的优化请求

这主要是针对[接口]和[静态资源]。 体现在两个方面。

【接口】基本上请不要超过1000ms。 即使只有几百毫秒,也可能需要进行一些优化。 基本上正常的速度是10-200ms。 对于单个接口,通常需要数百毫秒。 大多数情况下不应该超过500ms(后端大佬冷静点)。

[静态资源] 首先,考虑资源的大小。 大多数资源都是图像。 请参阅上面的图像尺寸标准。 接下来,考虑缓存资源。 对于小程序,静态资源通常存储在CDN上。 配置缓存可以有效提高客户端性能。

这里是一个图像压缩网站:https://tinypng.com/

7.避免使用太多的WXML节点。

页面节点数包括所有子节点数。 您需要注意的是子节点的数量。 如果子节点的数量超过 60 个,您可能您应该考虑重新分区您的组件或页面。

基本功!

8.使用骨架屏

骨架屏想必大家都很熟悉。 如果你用尽了所有的优化方法,而页面本身需要加载更多的资源,骨架屏也是最好的解决方案,退而求其次,认为“曲线救国”也可以。 。

实现骨架屏的方法有很多种。 您可以自己创建骨架组件或使用生成骨架屏幕的插件。 此外,小程序还提供了免费的卖淫解决方案,其开发者工具提供了自动生成骨架屏代码的能力。

9、适当划分组件,减小数据

微信小程序的大小。 更新基于更新组件和自定义组件。 仅在组件内部,减少差异比较的耗时。

控制数据的大小主要是为了减少内存消耗,比如在数据内部定义一些图像路径变量。 如果可能的话,我建议以后台方式加载一些图像。

10.为滚动区域设置惯性滚动

惯性滚动使滚动更加流畅。 惯性滚动在 Android 上默认可用,但在 iOS 上需要额外配置 -webkit-overflow-scrolling: touch style。

11.放大可点击元素的可点击区域

微信规定最小可点击区域必须至少为20x20像素。 我不会详细讨论这种风格的问题。 八仙渡海,展现神通。

最后

性能优化不是技术债务,而是应该在常规迭代版本中持续优化或重建。 团队成员需要清楚这一点。

更多优化点请参考官网地址:

https://developers.weixin.qq.com/miniprogram/dev/framework/audits/audits.html

如果您有任何疑问,请留言,我们会解决。

【相关学习推荐:小程序开发教程】

PHP轻松学习视频免费教程(从初学者到专家)

如何学习PHP PHP应该从哪里开始?我学PHP怎样才能快速学好PHP呢? 这里有简单的 PHP 学习教程(从初学者到专家)。 您可以保存并下载您想学习的朋友。

下载

这几篇文章你可能也喜欢:

本文由主机参考刊发,转载请注明:下面我来一步步讲解一下如何优化小程序。 (实用概述)(如何优化运行缓慢的小程序) https://zhujicankao.com/142423.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » 下面我来一步步讲解一下如何优化小程序。 (实用概述)(如何优化运行缓慢的小程序)
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

评论 抢沙发

评论前必须登录!