1
hienchu 2015-11-24 18:34:08 +08:00
async?
|
2
loryyang 2015-11-24 18:37:02 +08:00
回调函数?
|
3
lecher 2015-11-24 19:09:40 +08:00 via Android
封装一个回调处理
扔到线程去执行 |
4
k9982874 2015-11-24 19:12:38 +08:00
消息队列
|
5
larry618 2015-11-24 19:18:37 +08:00 via Android
使用 java 回调机制就可以了
|
6
funky OP |
8
felixzhu 2015-11-24 20:15:25 +08:00
要么 IO 复用,异步返回
要么直接返回,丢给后台进程处理,用户端那边每次重新获取状态 |
9
likuku 2015-11-24 23:57:10 +08:00
网络的问题,那就去改善网络品质嘛
|
10
FrankFang128 2015-11-25 02:49:57 +08:00 via Android 1
加 loading 动画
|
11
t895 2015-11-25 03:07:57 +08:00
@FrankFang128 笑尿,以前这么干过,结果被用户打死了
|
12
cnhongwei 2015-11-25 08:53:10 +08:00 1
封装一个回调异步处理,在页面上给用户一个提示就行了,你 sleep ,会让 http server 的连接池占满或 timeout 的。
|
13
fuxkcsdn 2015-11-25 08:58:47 +08:00 via iPhone
我们之前和一家供应商合作过,最开始以为是网络问题,又是换线路又是架海外代理,依然无果
最后 wget 打印详情发现卡在 wait response...卡了近 2/3 时间...(获取完整列表时,启用压缩情况下传输量是 3MB ,传输时间 10 秒左右, wait response 达到 50 秒...) |
14
wind4 2015-11-25 09:44:32 +08:00
参考 Azure 的设计,将任务丢到一个后台异步队列里面去执行,用户随时可以查看任务执行进度。
|
15
topkyo 2015-11-25 10:42:16 +08:00
异步消息队列处理这类问题额
|
16
aec4d 2015-11-25 10:50:08 +08:00
以 python web 框架性能对比为例 http://klen.github.io/py-frameworks-bench/ 这种情况异步请求模型就吊打多线程请求模型 当然这只是对比的单位时间内能响应的并发请求数 意味着并不能显著降低后端 web 服务器调用第三方服务的时间 所以还是像 10 楼那样加一个 loading 动画欺骗下用户比较好 你说的 sleep 差不多就是异步请求模型 至于任务队列 这完全是另外一种模型嘛 比如用户上传一个下载链接 然后你的服务器去下载 这个时候需要告知用户下载进度 不过我觉得题主的疑问是第一种情况
|
17
wate 2015-11-25 11:03:44 +08:00
sleep is stupid
|
18
funky OP @aec4d 你说的不错。现在的做法就是 loading 动画。这里考虑到用户体验,最好是同步的,但是认证需需要花费时间。只能做 loading 等待状态更新,至于任务队列在后端管理上用的多,在这个场景下个人感觉不是很合适
|
19
aec4d 2015-11-25 11:11:38 +08:00
@funky 我试过即使 20 秒的等待 只要动画效果够炫酷 都是能忍受的 如果超过了。。。。个人感觉还是想别的办法优化吧 比如网络。。。毕竟是同步的
|
20
hienchu 2015-11-25 14:07:21 +08:00
@funky 异步只能解决阻塞的问题,的确不能直接等同于用户体验。从逻辑上来讲,如果用户在获得返回之前必须什么都不能做(比如认证),那就只能优化认证过程。
|
21
Tink 2015-11-25 14:12:08 +08:00
消息队列处理
|