我正在制作一个分享照片的网络应用程序。用户可以从图库视图中选择要下载的照片,并按“下载”按钮将所选照片下载到ZIP文件中。
问题是,我并不知道如何有效地从文件数组中生成ZIP文件,特别是大尺寸的文件。照片的大小约为2-3 MB,甚至更高分辨率的图片.
我正在使用Firebase函数,特别是Google函数。我已经有了一个无服务器的功能,可以做我想做的事情,但是它非常慢,占用了很多内存。它将所有选定的照片下载到Google的临时文件夹中,使用节点-存档器,并将最终的ZIP文件上传到Google,其中要下载的文件的链接从无服务器功能返回。32张照片大约需要23秒才能完成,而150张则需要97秒。
我尝试使用缓冲区,而不是将文件写入临时目录,但它仍然有大约相同的时间。
我通过删除临时文件夹中的文件使它变得更快一些,节点存档程序将其附加到ZIP中。这很可能会消除一些内存,因为Google函数的临时文件夹也被计算在内存中。32张照片需要16秒,150张照片需要81秒。
有没有其他有效的方法来做到这一点?我只是在写这个问题的时候想到了文件流,但我对它们并不熟悉。
发布于 2021-01-12 12:02:34
照片(jpeg和png格式)已经以压缩格式存储。压缩是无用的。您必须只使用ZIP对同一文件中的所有图片进行分组。
因此,根据您的ZIP,使用“只存储”或“不压缩”模式来加快进程。
https://stackoverflow.com/questions/65680372
复制相似问题