uni-app ios上navigateTo性能问题 很慢
uni-app ios上navigateTo性能问题 很慢
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | Retina, 13-inch, 2020 | CLI |
示例代码:
uni.navigateTo({
url:'/pages/XX'
});
操作步骤:
打包淡村真机运行
预期结果:
点击立即跳转
实际结果:
点击后 延迟3秒左右后才跳转
bug描述:
navigateTo很慢很慢!大概几秒的样子
animationDuration设置成0,或者负数,经测试设置成-100效果最快
设置了,只时动画时间短了,点击后还是要等待2到3秒的样子,安卓上就很快
回复 果李程: 跳转之前是否写了其他的代码逻辑,是否前边有什么其他代码延迟了跳转方法
回复 JXWang: 没有什么基它逻辑,跳转到的页面会先请求数据 ,如果有请求数据 请求数把的时长会在2-3秒之间但在安卓上基本是秒过,那就说明uni.request在ios上有问题,我是在本地局域网测试
回复 JXWang: 17:02:05.266
开始跳转:1706259724954 at components/h-com-postCard/h-com-postCard.vue:189 17:02:05.267 开如加载数据:1706259724965 at pages-post/post-details-page/post-details-page.vue:57 17:02:08.349 完成跳转:1706259728238 at components/h-com-postCard/h-com-postCard.vue:195 17:02:08.349 消耗:3284 at components/h-com-postCard/h-com-postCard.vue:196 17:02:08.349 加载数据结否:1706259728257 at pages-post/post-details-page/post-details-page.vue:74 17:02:08.349 请求数据用时:3292 at pages-post/post-details-page/post-details-page.vue:75
回复 果李程: 前边有请求数据的话,可能是接口响应慢导致的。可以考虑是否可以进行预请求数据,比如如果是列表页在列表接口就把需要的数据先请求出来,或者也可以加一个loading,等接口请求完成之后关闭loading
回复 JXWang: 这个是可以,但是普遍问题 ios上请求就是要慢的多不是一个数量级的,完全不是一个体验等级 android就很快这是什么原因呢 以下是安卓的请求耗时: 18:22:01.518 开始跳转:1706264521104 at components/h-com-postCard/h-com-postCard.vue:189 18:22:01.542 开如加载数据:1706264521128 at pages-post/post-details-page/post-details-page.vue:57 18:22:01.781 加载数据结否:1706264521365 at pages-post/post-details-page/post-details-page.vue:74 18:22:01.782 请求数据用时:237 at pages-post/post-details-page/post-details-page.vue:75 18:22:01.800 完成跳转:1706264521375 at components/h-com-postCard/h-com-postCard.vue:195 18:22:01.801 请求数据用时:271 at components/h-com-postCard/h-com-postCard.vue:196
一对比完全不是一个数量级
回复 果李程: 如果没有针对ios或者android写不用的代码逻辑的话,请求相同的接口,响应的时间不一致,可能会有多种原因。首先可能是网络问题,可以使用抓包工具看一下安卓和ios真实的接口响应时间,看看接口是否针对不同用户、不同设备有不同的处理逻辑导致的接口响应时间变长。
回复 JXWang: 确定不是网络问题 抓包工具 查看请求都在 ms级别 并且我们的环境都是在局网, 可以看到 ios下抓包看到的请求响应是很快的 应该是uni.request内部处理的问题导到请求很慢 http://172.16.3.78/msg/info 200 POST 172.16.3.78 /msg/info Fri Jan 26 19:29:40 CST 2024 155 3622 Complete http://172.16.3.78/msg/comment/hot/queryComment 200 POST 172.16.3.78 /msg/comment/hot/queryComment Fri Jan 26 19:29:41 CST 2024 93 1333 Complete http://172.16.3.78/msg/readMsg 200 POST 172.16.3.78 /msg/readMsg Fri Jan 26 19:29:42 CST 2024 36 1286 Complete
回复 果李程: 我测试了一下ios的请求方法响应时间是正常的,可否提供下您的具体的测试代码或测试工程,我这边好排查一下
回复 JXWang: 加了时间打印 在发送请求前会有个签明 签明的sign方法在ios比较耗时 大概1s多的样子 使用的是 jsrsasign sig.sign() 这个方法在ios耗时在1s多 这个是什么原因呢 Android下几乎不消耗 const sig = new jsrsasign.KJUR.crypto.Signature({ “alg”: “SHA256withRSA” }); console.log(“签明参数签名消耗:” + (new Date().getTime() - signDate.getTime()));
回复 果李程: 我这边测试了一下,大概耗时几百毫秒。请问hbuilderx是最新版本吗,可升级到最新版本试一下
回复 JXWang: 几百毫秒已经很耗时了 我采用了2048位的密钥对 大概在1s多的样子,降低使用512位的密钥对 才降到百毫秒以内,不过这ios与android的差距也太大了些。 谢谢了 此问题暂时以牺牲降低破解强度为代价算是解决了,感谢你的助
回复 果李程: 不客气,应该做的