1
tffy 2019-09-29 17:50:04 +08:00 via iPhone
分成多个请求,一次获得一部分,后台一次只处理一部分
|
3
340244120w 2019-09-30 09:32:55 +08:00
先把 json 存到硬盘,然后按一段一段的读取,一段一段的写入 response
OutputStream os = response.getOutputStream(); while((read = is.read(bytes))!= -1){ os.write(bytes, 0, read); } os.flush(); os.close(); |
4
xuanbg 2019-10-01 08:31:13 +08:00
对象存储,生成 url 客户端直接下载就行了吧
|
5
yuikns 2019-10-01 22:57:29 +08:00
那样只能 hack 一下序列化了吧?
比如结构为 { "status": true, "data": [ { elem0}, { elem1 }, .... ]} 那么你只能先把 { "status": true, "data": [ 先写了,然后每个 element 单独序列化后写 response,最后补一个 ]} 中间单独序列化类似 map-reduce,数据结构是独立的,应该问题不大 |
6
yuikns 2019-10-01 22:58:43 +08:00
tcp 底层并不要求你一次把所有数据准备好,完全可以一段一段发的
|
7
zjp 2019-10-03 22:59:00 +08:00 via Android
直接操作输出流 + 流式序列化
但是几百兆的数据网络一抖动就下载失败不能断点续传也太糟糕了 |
8
hakono 2019-10-04 21:40:42 +08:00 via iPhone
为什么一定要想着流式之类的
直接把 json 保存到本地文件,然后交给 nginx 当作普通的一个大的静态文件下载下来不就行了。。。 |