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

如何在Flutter中优化API子查询,提升关联数据加载速度?

优化Flutter异步API请求性能的可行方案

后端层面优化

  • 改造为批量查询接口
    别让前端逐个发请求查关联数据,后端新增批量查询接口。前端把需要查的所有ID一次性传过去,后端用Sequelize的findAll配合where: { id: [...ids] }批量拉取关联表数据,一次请求返回所有对应名称。比如给某个关联表加POST /api/related-table/batch接口,接收ids数组,返回id和名称的映射集合。
  • 预加载关联数据
    查询materials_requisitions的时候,用Sequelize的include选项直接关联查询需要的表,把关联的可读名称一起返回给前端。这样前端拿到数据就能直接用,不用再发额外请求。示例代码:
    const requisitions = await MaterialsRequisition.findAll({
      include: [
        { model: Supplier, attributes: ['id', 'supplier_name'] },
        { model: Material, attributes: ['id', 'material_name'] }
        // 按需添加其他关联表
      ]
    });
    
  • 缓存高频静态数据
    对于不常变动的关联字典表,后端用Redis或者内存缓存查询结果,下次请求直接返回缓存,减少数据库查询耗时。

前端层面优化

  • 并行发起请求而非串行等待
    如果暂时没法改后端,别逐个循环等每个请求完成,用Future.wait()同时发起所有异步请求。示例代码:
    // 待查询的关联ID列表
    List<String> relatedIds = reqData.map((item) => item.relatedId).toList();
    // 生成所有请求的Future列表
    List<Future<String>> nameFutures = relatedIds.map((id) => fetchRelatedName(id)).toList();
    // 并行等待所有请求完成
    List<String> names = await Future.wait(nameFutures);
    
    这样总耗时是最慢的那个请求的时间,而非所有请求时间相加。
  • 本地缓存已查询数据
    前端把查过的关联ID和对应名称存在本地(比如SharedPreferences、Hive),下次遇到相同ID直接从缓存取,不用重复发请求。示例代码:
    final Map<String, String> _relatedNameCache = {};
    
    Future<String> getRelatedName(String id) async {
      if (_relatedNameCache.containsKey(id)) {
        return _relatedNameCache[id]!;
      }
      final name = await ApiClient.fetchRelatedName(id);
      _relatedNameCache[id] = name;
      return name;
    }
    
  • 分页+懒加载优化
    如果materials_requisitions数据量很大,别一次性加载所有数据,分页加载。并且每个条目的关联名称,等滚动到可见区域时再发起请求(懒加载),避免一次性发起大量请求阻塞页面。

前后端配合进阶方案

  • 改用GraphQL替代REST
    换成GraphQL接口,前端可以精确指定需要的字段和关联数据,一次请求就能拿到所有materials_requisitions和对应的可读名称,彻底避免多次REST请求。Sequelize能很好配合GraphQL解析器实现关联查询。
  • 返回扁平化数据结构
    后端返回数据时,把关联表的名称直接扁平嵌入materials_requisitions的字段里,比如返回{ id: 101, supplier_name: "XX供应商", material_name: "XX原料", ... },前端直接使用,不用处理嵌套结构或额外请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:15:32