我有大约1GB的数据,我的客户端想以zip文件的形式从我的门户网站下载,但是在后端,这些文件是从AWS S3提供的。
当前,我正在将所有文件下载到内存流中并进行压缩,这会花费很多时间,有时会超时,并且客户端不确定请求是否正在处理,因为我在浏览器中没有下载进度。
那么有什么最好的解决方案来下载从S3压缩的海量数据
谢谢
答案 0 :(得分:0)
您可以在Amazon EC2实例上运行一些代码,该实例从Amazon S3下载数据(如果在同一区域,则非常快),将其压缩,然后将压缩回S3。 >
然后用户可以直接从S3下载它。
如果您想花哨的话,他们可以通过预签名URL下载,并且您可以使用生命周期规则,将一两天后将其删除。
答案 1 :(得分:0)
好的,所以我本人对S3的经验很少,但是在一般情况下,像这样需要异步处理。与之类似,当用户单击“下载”时,您将启动一个后台进程,该进程将文件下载并压缩到某个临时位置。在此期间,您的客户会看到类似“正在准备下载,请稍候”的内容。理想情况下,带有进度条,以便他可以看到该过程不会停止。完成后,由于您已经在临时位置拥有完整的ZIP文件,因此下载将真正开始,并且没有任何超时。
或者,查看是否可以简化整个过程。现在,听起来好像您正在将所有文件下载到内存,在内存中创建ZIP文件,然后只有,您才开始将第一个字节输出到客户端。你可以做得更好。那里有允许“即时”压缩的库。尽管您仍然从一端从S3下载文件,但另一端已经将ZIP文件分发到客户端。这样,您也无需将所有内容都保留在内存中。