果李程
果李程
  • 发布:2024-01-26 10:32
  • 更新:2024-01-26 11:52
  • 阅读:227

【报Bug】 ios上navigateTo很慢很慢!

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: Retina, 13-inch, 2020

手机系统: iOS

手机系统版本号: iOS 16

手机厂商: 苹果

手机机型: iphoneX

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: CLI

CLI版本号: 3

示例代码:

uni.navigateTo({
url:'/pages/XX'
});

操作步骤:

打包淡村真机运行

预期结果:

点击立即跳转

实际结果:

点击后 延迟3秒左右后才跳转

bug描述:

navigateTo很慢很慢!大概几秒的样子

2024-01-26 10:32 负责人:无 分享
已邀请:
JXWang

JXWang

animationDuration设置成0,或者负数,经测试设置成-100效果最快

  • 果李程 (作者)

    设置了,只时动画时间短了,点击后还是要等待2到3秒的样子,安卓上就很快

    2024-01-26 13:03

  • JXWang

    回复 果李程: 跳转之前是否写了其他的代码逻辑,是否前边有什么其他代码延迟了跳转方法

    2024-01-26 14:46

  • 果李程 (作者)

    回复 JXWang: 没有什么基它逻辑,跳转到的页面会先请求数据 ,如果有请求数据 请求数把的时长会在2-3秒之间但在安卓上基本是秒过,那就说明uni.request在ios上有问题,我是在本地局域网测试

    2024-01-26 17:10

  • 果李程 (作者)

    回复 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

    2024-01-26 17:12

  • JXWang

    回复 果李程: 前边有请求数据的话,可能是接口响应慢导致的。可以考虑是否可以进行预请求数据,比如如果是列表页在列表接口就把需要的数据先请求出来,或者也可以加一个loading,等接口请求完成之后关闭loading

    2024-01-26 17:38

  • 果李程 (作者)

    回复 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


    一对比完全不是一个数量级

    2024-01-26 18:30

  • JXWang

    回复 果李程: 如果没有针对ios或者android写不用的代码逻辑的话,请求相同的接口,响应的时间不一致,可能会有多种原因。首先可能是网络问题,可以使用抓包工具看一下安卓和ios真实的接口响应时间,看看接口是否针对不同用户、不同设备有不同的处理逻辑导致的接口响应时间变长。

    2024-01-26 18:54

  • 果李程 (作者)

    回复 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

    2024-01-26 19:34

  • JXWang

    回复 果李程: 我测试了一下ios的请求方法响应时间是正常的,可否提供下您的具体的测试代码或测试工程,我这边好排查一下

    2024-01-27 10:35

  • 果李程 (作者)

    回复 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()));


        sig.init(KEYUTIL.getKey(this.getPrivateKey()));  
    console.log("签明初始化私钥消耗:" + (new Date().getTime() - signDate.getTime()));
    sig.updateString(sortParam);
    console.log("签明更新排序消耗:" + (new Date().getTime() - signDate.getTime()));

    let signed = sig.sign()
    console.log("签明后消耗:" + (new Date().getTime() - signDate.getTime()));

    2024-01-27 13:20

  • JXWang

    回复 果李程: 我这边测试了一下,大概耗时几百毫秒。请问hbuilderx是最新版本吗,可升级到最新版本试一下

    2024-01-27 15:31

  • 果李程 (作者)

    回复 JXWang: 几百毫秒已经很耗时了 我采用了2048位的密钥对 大概在1s多的样子,降低使用512位的密钥对 才降到百毫秒以内,不过这ios与android的差距也太大了些。

    谢谢了 此问题暂时以牺牲降低破解强度为代价算是解决了,感谢你的助

    2024-01-27 16:03

  • JXWang

    回复 果李程: 不客气,应该做的

    2024-01-27 16:04

要回复问题请先登录注册