You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何缩短Dio请求的连接建立耗时?连接建立耗时超418ms

Dio连接建立耗时过长的优化方案
  • 启用HTTP/2协议
    HTTP/2支持TCP连接复用,能避免重复建立连接的开销。在Dio中配置HTTP/2适配器:

    import 'package:dio/dio.dart';
    import 'package:dio_http2_adapter/dio_http2_adapter.dart';
    
    void setupDio() {
      final dio = Dio();
      dio.httpClientAdapter = Http2Adapter(
        ConnectionManager(
          idleTimeout: const Duration(seconds: 10),
        ),
      );
    }
    
  • 配置连接池与连接复用
    通过设置连接池参数,复用已有TCP连接,减少频繁创建连接的耗时:

    void setupDio() {
      final dio = Dio();
      dio.httpClientAdapter = DefaultHttpClientAdapter()
        ..onHttpClientCreate = (HttpClient client) {
          client.connectionTimeout = const Duration(milliseconds: 3000);
          client.maxConnectionsPerHost = 10; // 单域名最大复用连接数
          return client;
        };
    }
    
  • 优化DNS解析
    DNS解析延迟是连接建立慢的常见诱因,可以提前缓存DNS结果,或使用自定义DNS解析器:

    void setupDio() {
      final dio = Dio();
      dio.httpClientAdapter = DefaultHttpClientAdapter()
        ..onHttpClientCreate = (HttpClient client) {
          // 假设已通过自定义DNS解析得到目标IP
          final resolvedIp = '192.168.1.100';
          client.findProxy = (Uri uri) {
            return 'PROXY $resolvedIp:${uri.port}';
          };
          return client;
        };
    }
    
  • 合理设置连接超时
    配置合适的连接超时,避免无意义的等待,同时确保不会过早中断正常连接:

    void setupDio() {
      final dio = Dio();
      dio.options.connectTimeout = const Duration(milliseconds: 3000);
    }
    
  • 缩短物理距离
    如果服务器部署位置离用户过远,建议将服务迁移到用户就近的节点,或使用CDN加速,直接降低TCP握手的往返延迟。

  • 启用TCP快速打开(TFO)
    部分平台支持TCP快速打开,减少握手的往返次数,进一步降低连接建立时间:

    void setupDio() {
      final dio = Dio();
      dio.httpClientAdapter = DefaultHttpClientAdapter()
        ..onHttpClientCreate = (HttpClient client) {
          if (client is! BrowserClient) {
            client.enableTcpFastOpen = true;
          }
          return client;
        };
    }
    

内容的提问来源于stack exchange,提问作者fthdmirr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:54:41