前端一次性发起多个请求发现返回的请求时间太长 ,是前端原因还是后端

2019-07-08 10:21:20 +08:00
 chenlaocong

有一个需求是前端一次性请求 10 个接口,等 10 个接口全部请求完毕之后前端再解析。 但是发现 10 个接口中总是有几个接口过慢。差不多 10 秒钟,然后后端打日志,发现数据库请求加后端程序处理只用了 2 秒左右。于是查看前端 network 的时间,发现其余的 8 秒发现是花费在了 ttfb 上,查了一下 TTFB 指的是前端发起请求到后端接受第一个字节所需要的时间。

那么问题就来了,这个 TTFB 是前端的原因还是后端的,会不会是 mysql 或者 es 多个访问阻塞了,或者是因为 nginx 配置,或许可能是服务器性能差?要怎么优化这个时间,有经验的大佬请回答下。 PS 我是前端,不太懂服务端这些 nginx 配置啥的

11327 次点击
所在节点    程序员
45 条回复
learnshare
2019-07-08 11:25:32 +08:00
@15651980765 #15 也有可能是写接口的人不好调教
jialing
2019-07-08 11:25:40 +08:00
接口使用多域名;中间件 聚合接口;
utf16
2019-07-08 11:32:57 +08:00
为啥不优化一下 可以合下接口
xrr2016
2019-07-08 11:36:04 +08:00
建议合并后端接口
keelii
2019-07-08 11:53:17 +08:00
君不见淘宝,京东图片都是 img1,2,3,3 么。分流下。另外看下请求瀑布流看看到底慢在哪里?分流不好做就让后端包一层拼合的接口,批量操作。
Mazexal
2019-07-08 11:56:05 +08:00
一般是中间加一层, 你们用 node 来桥接下, 然后包装成一个接口给前端
hubahuba
2019-07-08 11:58:01 +08:00
Promise 好一些吧
meepo3927
2019-07-08 11:59:26 +08:00
合并成 1-2 个接口吧 , 可以考虑引入中间层
laravel
2019-07-08 12:07:51 +08:00
我们以前都是后端用 laravel,然后中间用 nodejs 写接口,就是从 N 个接口获取数据,然后做业务处理,然后把处理后的数据返回给前端(也是我,就是这么神奇)
laravel
2019-07-08 12:08:07 +08:00
后端用 java
heasy
2019-07-08 12:42:43 +08:00
合并接口优化或者前端使用 Promise.all
duan602728596
2019-07-08 12:50:30 +08:00
这种基本上就是需要后端出一个接口聚合数据,而不是让前端请求 10 个接口
chenlaocong
2019-07-08 12:51:54 +08:00
@heasy promise.all 也是相当于同时请求多个接口了吧。我现在就是 promise.all
fishlium
2019-07-08 14:29:43 +08:00
10 个接口应该还好吧,看你描述不像是浏览器对域名的限制,仔细排查一下整个过程,上个 http2 可以彻底排除浏览器对域名限制这一项
colorfulberry
2019-07-08 15:04:02 +08:00
需要一个 graphiql
goofool
2019-07-08 16:53:20 +08:00
只有一台服务器吗?默认长连接,有可能请求是顺序执行的。
imbacc
2019-07-08 17:34:35 +08:00
写个 node 可以把
fortunezhang
2019-07-08 17:41:46 +08:00
@chenlaocong 不是,后端在并发的情况处理好的话 10 个还是没问题的。 你可以看下浏览器的 network,感觉楼上说的同一个域名并发数有限有可能,你得看下网络,如果真的这样的话就需要加一个域名了。
morethansean
2019-07-08 18:02:02 +08:00
卡连接池也是 pending 啊,ttfb 跟连接池有什么关系?
Ritr
2019-07-08 18:32:58 +08:00
合并接口吧,不建议用现在的方式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/580906

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX