Node.js 使用无服务器功能压缩照片文件夹的最有效方法?

Node.js 使用无服务器功能压缩照片文件夹的最有效方法?,node.js,firebase,google-cloud-functions,Node.js,Firebase,Google Cloud Functions,我正在制作一个照片共享web应用程序。用户可以从gallery视图中选择要下载的照片,然后按下载按钮将这些选定的照片下载到ZIP文件中 问题是,我真的不知道有什么有效的方法可以从一系列文件中生成ZIP文件,尤其是大文件。照片的大小约为2-3MB,对于分辨率更高的图像,甚至更大 我使用的是Firebase函数,特别是Google云函数。我已经有了一个无服务器的函数,可以实现我想要的功能,但是它非常慢,占用了很多内存。它将所有选定的照片从Google Cloud Storage下载到一个临时文件夹中

我正在制作一个照片共享web应用程序。用户可以从gallery视图中选择要下载的照片,然后按下载按钮将这些选定的照片下载到ZIP文件中

问题是,我真的不知道有什么有效的方法可以从一系列文件中生成ZIP文件,尤其是大文件。照片的大小约为2-3MB,对于分辨率更高的图像,甚至更大

我使用的是Firebase函数,特别是Google云函数。我已经有了一个无服务器的函数,可以实现我想要的功能,但是它非常慢,占用了很多内存。它将所有选定的照片从Google Cloud Storage下载到一个临时文件夹中,使用并将最终的ZIP文件上载到Google Cloud Storage,从无服务器功能返回要下载的文件链接。32张照片大约需要23秒才能完成该功能,而150张照片则需要97秒

我尝试使用缓冲区,而不是将文件写入临时目录,但它仍然有大约相同的时间

通过删除临时文件夹中的文件,节点archiver将其附加到ZIP中,我使其速度加快了一点。这很可能会消除一些内存,因为谷歌云功能的临时文件夹也会计入内存。32张照片耗时约16秒,150张照片耗时81秒

还有其他有效的方法吗?当我写这个问题时,我只是想了想,但我对它们并不熟悉。

照片(jpeg和png格式)已经以压缩格式存储。压缩是无用的。您必须仅使用ZIP将所有图片分组到同一文件中


因此,根据您的ZIP库,使用“仅存储”或“无压缩”模式来加快处理过程。

为什么我以前没有想到这一点,哈哈。现在功能运行得更快了,谢谢!