后端接口处理时间太长,前面页面接口相应超时,如何处理?

新手上路,请多包涵

后端接口处理时间太长,前面页面接口相应超时,如何处理?

阅读 3.9k
7 个回答

服务端可以用多线程处理 用空间换时间
也可以去做异步处理

要么加钱加设备提高性能(前提是代码已经没有优化空间了),单台不行上多台,通过负载均衡的方式,将请求分配到多个后端服务器上,
要么就是异步处理,提交任务以后,立即返回一个任务ID,然后通过轮询或者推送的方式查询任务的处理状态

新手上路,请多包涵

是不是你的这个接口做的事情太多了,可以拆成几个接口
再就是你的接口做了太多的非主业务,这块也可以拆

不知道你是不是想解决504超时?

如果后端接口没法优化得更快,前端的用户也能接受等待一段时间,那可以考虑直接把超时时间延长。让后面的流程继续走下去。

新手上路,请多包涵

如果接口确实耗时可以给接口添加状态标示是否结束,前端轮训这个接口,当后端未完结的时候返回状态waiting,并且定时去调用这个接口直到完结

针对该接口,去new一个axios,把timeout时间也设得长一些

思路1: 优化接口,提升响应速度

  1. 排查程序中是否有多层for循环处理数据
  2. 是否使用数据库,数据库响应比较慢,需要优化sql或者对数据库优化
  3. 如果频繁使用了某一个数据集,可以考虑能否通过缓存来解决(redis)
  4. 如果是调用第三方接口,但是第三方接口响应慢,可以考虑使用线程异步请求第三方接口(Future)

思路2: 异步响应

  1. 如果无法按照思路1优化,可以考虑一个接口拆分成多个接口(可能会出现事务问题).
  2. 后端接受到处理请求之后,把请求信息放入异步任务执行,然后返回给前端一个状态值,表示确认信息收到.前端收到确认消息之后,可以通过循环或者在合适的地方触发请求查询最终执行结果.
推荐问题
宣传栏