前端异步获取易超时请求结果
使用场景
前端页面发起一个查询请求,但是呢,由于数据量太大或网络等等问题,超时啦!
而这个前端页面是用php写哒,使用了php-fpm来进行进程管理,代理服务器使用的是nginx
那么当进程超时,前端就会返回504 超时错误啦~
当返回504后,该用户会有一段时间访问不了网站,体验感相当不佳呀!!!
解决方案
- 把这些容易超时的请求修改为异步请求
- 请求后返回给前端一个请求查询ID
- 后端处理该查询请求,当查询结束后保存结果
- 前端通过后端返回的查询id进行轮询,当查询到结果后进行页面渲染
方案技术要点
后端异步执行请求
前端ajax请求,页面渲染,根据字段适配生成表格
后端实现
使用语言 golang
首先呢,我们定义一个监听程序 func RequestExecListener() 该程序在获取到需要执行的请求时,执行 requestExec(item),否则每隔一秒输出 “free”
//监听程序
func RequestExecListener() {
for {
select {
case item := <- ListenerChan :
go requestExec(item)
case <- time.After(1*time.Second) :
fmt.Println("free... ")
}