I recently did a project with Flutter. During the beta test, the iOS interface was very sluggish, even if a simple page switch was performed, it would get stuck in half of the page, which was fine on Android. At first, I thought there was a problem with the Flutter code, but after several days of code optimization and troubleshooting, the problem was finally located in the server HTTPS certificate. IOS uses Let’s Encrypt to authenticate the network. The IP address is ocsp.int-x3.letsencrypt.org, but the IP address cannot be accessed in China.

There is a lot of discussion about this issue on Github (see Dart-lang-issue, dio-Issue). Basically, it can be concluded that Flutter will lag when making network requests on iOS as long as the server uses LetsEncrypt certificate in the country. Note that this is not a problem with Flutter, but a problem caused by iOS and LetsEncrypt certificates. For example, Safari will block the web page that opens the LetsEncrypt certificate, so the solution is to replace the certificate.

OCSP (Online Certificate Status Protocol) is an extension of TLS. In TLS, clients cannot determine whether a Certificate that has not expired has been revoked. At this time, some clients, after getting a certificate from the server, will go to the interface of the server to verify whether the certificate is expired or revoked, while some do not carry out the client check. IOS does, but Android does not. It is said that Because Google is not satisfied with the OCSP solution, it believes that checking the certificate status does not increase security, but causes HTTPS requests to take longer, so all Google products, Neither Android nor Chrome does OCSP checking.

If you insist on using LetsEncrypt certificates, there are workarys. this article explains how to configure SSL_stapling_responder to send request OCSP to the server you set. Nevertheless suggest everybody still change card book!