最近开发中遇到接口超时问题,
背景:数据计算量过大,接口响应时间过长时,网关会报超时,页面就挂了
想请教下各位大神前端有什么比较好的方案可以进行优化吗(比如超时给个提示,不让页面挂掉)
最近开发中遇到接口超时问题,
背景:数据计算量过大,接口响应时间过长时,网关会报超时,页面就挂了
想请教下各位大神前端有什么比较好的方案可以进行优化吗(比如超时给个提示,不让页面挂掉)
后台时间太久,对前端用户非常不友好。
全局设置超时时间(单位ms)
axios.defaults.timeout = 2500; //2.5s
单独设置超时时间(单位ms)
axios.get('/longRequest', {
timeout: 5000
});
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.3k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
5 回答3.8k 阅读
你用前后端不分离的表单形式那就没办法,直接就 502/504,即便你能自定义错误页面也是很不友好的。就得改造成 AJAX,这样你才能在 JS 里捕捉到错误好给个提示啥的。
不建议采用增大网关的超时等待时间这种粗暴的做法,因为尽快挂掉也是为了给后来的请求腾地方,要不然全都堆积在那儿了。
如果你的业务确实就是有经常性的大量计算,最好改造成提交和查询两步进行,提交数据后直接返回一个任务 ID 之类的,后台异步地去执行,别让前端等。此时前端显示个 loading 之类的,等后台处理好以后通过某种方式告知前端(轮询也好、WebSocket 也罢)再获取执行结果。
可以参考微信商户或者支付宝商户导出订单的那种业务逻辑,你提交查询条件后就立刻返回,等它生成好了你再去下载。