解决苹果内核加载网页慢的问题

0

解决苹果内核加载网页慢的问题

情景

一个H5的页面,里面嵌套在 IOS 中,有它的 wkwebview 进行渲染,这是背景。表现出的问题是,由 IOS 发起请求到最终用户看到页面需要等待特别长的时间,大概6秒到15秒之间。需要排查并解决这个显示慢的问题。

操作过程

  1. IOS 端往浏览器中写入 Cookie
  2. 浏览器根据 url 地址去请求 Oauth2.0 登录。
  3. 浏览器根据返回的 code 跳转 登录。
  4. 浏览器端登录后跳转到应用首页。

PS: 其中 浏览器端 指的是 IOS 中的 wkwebview

排查思路

  1. 是否是 IOS 本身的 wkwebview 的问题?
  2. 为什么之前使用 IOSuiwebview 没有这个问题?
  3. 是否是 Oauth2.0 业务的问题?
  4. 是否是应用本身的问题?
  5. 是否是网络问题?

分析问题

  1. wkwebview 访问其他网页不管是https 或者 http 的都能正常访问 证明不是它本身或者配置问题。
  2. 为什么 uiwebview 没有这个问题?
    经过试验,发现 uiwebview 本身在访问现有业务确实没有这个问题,当时也不清楚为什么它可以正常访问,就让 IOS 开发切换成这个不就好了。结果反馈说用这个不能上架。原来 iOS13 开始苹果将 UIWebview 列为过期 API2020年4月起App Store将不再接受使用UIWebView的新App上架、2020年12月起将不再接受使用UIWebView的App更新。
  3. Oauth2.0 业务在安卓端都能正常访问,故排除。
  4. 是否是应用本身的问题? 同上。
  5. 是否上网络问题?
    带着这个问题,去网上按照 ios 苹果 wkwebview 超时,发现大多说是 wkwebview 302 的坑以及存储分离 balaba的,按照给出的答案试了试 都没有解决问题。

在快要放弃的时候,之前的一个IOS开发大拿说肯定是https的问题你们查查。
结果就找到了这篇文章

  1. ios 访问 Let‘s encrypt 免费证书的 https 很慢
  2. 部署 Let’s Encrypt 的站点国内首次打开很慢?那是因为 OSCP 域名被墙了
  3. 微信小程序首次请求慢 Safari浏览器访问慢 pending 10秒 可能是HTTPS证书的锅

结论

看到这里,就会发现是苹果内核安全机制导致的,每次都需要去验证 https的证书,如果不巧,你用的免费的证书,那么他的颁发机构在国外,在有段期间,国内访问都会很慢。

解决问题

找到的原因就解决了,要么更换证书使用国内的颁发的证书,要么在服务器做DNS或者其他优化,来加速访问。

总结

虽然这次的问题不出在前端应用的本身,而且解决方式非常简洁,但是针对于多端联调以及排查思路有了提高。以后对于网络层次方面的问题也更有经验去定位以及解决问题。

-------------------本文结束 感谢您的阅读-------------------
坚持原创技术分享,您的支持将鼓励我继续创作!