接口太多导致页面加载慢,怎么合并请求?

长孙芸倩 阅读 25

我们首页要同时拉用户信息、订单列表和系统通知,现在是三个独立的 fetch,感觉太慢了。有没有办法把它们合并成一个请求?

我试过用 Promise.all,但后端说这样还是三次数据库查询,没减轻压力。是不是得让后端搞个聚合接口?但我不确定前端这边该怎么配合。

Promise.all([
  fetch('/api/user'),
  fetch('/api/orders'),
  fetch('/api/notifications')
]).then(responses => {
  // 处理数据...
})
我来解答 赞 10 收藏
二维码
手机扫码查看
1 条解答
Good“嘉蕊
对,就是得让后端搞聚合接口,Promise.all 只是并行发请求,网络往返还是三次,治标不治本。

懒人方案:后端开一个 /api/home 接口,一次性返回所有数据,结构大概这样:

{
"user": { "name": "张三", "id": 1 },
"orders": [...],
"notifications": [...]
}


前端直接调一个接口就完事:

const res = await fetch('/api/home')
const { user, orders, notifications } = await res.json()


后端那边内部调用是同一事务或并行查库都行,反正只暴露一个 HTTP 入口,网络延迟直接省掉 2/3。你们后端要是嫌麻烦不愿意改,就把锅甩给性能优化,说首屏加载时间影响用户留存,产品经理会帮你们施压的。
点赞 1
2026-03-02 06:00