首页 新闻 会员 周边

前端发起 ajax 请求后,因后端接口耗时数分钟,导致页面处于 “加载等待” 状态,用户体验极差要如何优化?

0
悬赏园豆:20 [待解决问题]

我php有一个接口查询很慢,返回结果要查好几分钟,我前端ajax提交接口查询后,页面就一直在转,一直在等接口返回结果,只有等结果返回结果了,页面才正常,请问这种问题要如何优化改进?

我是想我前端ajax提交接口查询后,不等接口返回,马上跳转到显示页面,接口在php后台继续执行查询,

跳转到显示页面后,有什么办法能获得接口的结果,对显示页面的完成状态进行更新吗?
是对接口进行轮询请求吗?(消息队列除外,想简单一点)

青茶360的主页 青茶360 | 初学一级 | 园豆:174
提问于:2026-02-10 10:40

php后端查询请求我用异步脚本执行了,这样就不会卡住了,前端也正常了。

青茶360 3天前
< >
分享
所有回答(8)
0

我能想到的一个改造点是,参考解决异步传染的思路,你后端放在线程里正常执行,提供一个状态数据,前端写个循环或者说递归,访问如果后端没处理完报错,处理异常部分就是隔几秒后在访问,数据展示的地方先给个处理中的样式,对于用户来讲就不阻塞了

一直哈基米 | 园豆:210 (菜鸟二级) | 2026-02-10 10:55
0

纯后端的问题,光显示页面没数据是无意义的,建议后端代码重构优化吧

小杨同学906 | 园豆:215 (菜鸟二级) | 2026-02-11 16:15
0

并不觉得这个需要前端去处理,如果需要前端处理的话那就只能前端缓存一部分数据了
但是这样来说对前端、后端的压力都会增大
前端可能数据过多还可能被浏览器给干死

凋鱼 | 园豆:202 (菜鸟二级) | 2026-02-11 16:37
0

豆包的回答:
优先选长轮询:如果想最小改动(接近原轮询逻辑),仅优化请求次数,长轮询是最优解,实现简单且体验更好。
次选 SSE:如果想彻底抛弃「轮询」逻辑,用服务器主动推送,SSE 比 WebSocket 更易实现,适配你的「单向获取结果」场景。
WebSocket 兜底:如果对实时性要求极高(比如任务完成后需立即更新),可考虑 WebSocket,但需额外搭建 WebSocket 服务。
所有方案的核心逻辑都是「前端保持与服务器的连接,服务器在任务完成后主动响应 / 推送结果」,替代前端定时发起请求的轮询模式。

沧海一粟不够喝 | 园豆:7 (初学一级) | 2026-02-11 17:26
0

简单的话,就在前端制造假象。
http跳转改成页面内跳转展示新内容,也就是不终止向服务器请求,

青争竹马 | 园豆:5874 (大侠五级) | 2026-02-12 09:38
0

用进度条显示加载进度不占用用户视野,添加鼠标浮动显示详情

Ccarrote | 园豆:206 (菜鸟二级) | 2026-02-13 10:46
0

还是优化后端吧,我建议。

会长 | 园豆:12324 (专家六级) | 2026-02-14 10:37
0

感觉还是得优化一下后端,查询好几分钟,前端感觉不需要怎么改,或者就是响应动画,转圈圈的那种

Meditation丶 | 园豆:202 (菜鸟二级) | 2026-02-19 14:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册