上传到Image Heavy网站的最佳方式是什么?

时间:2016-03-24 07:41:44

标签: node.js reactjs image-uploading

我有一位客户希望我开发一个股票摄影网站。如您所知,对于股票摄影,用户上传大量文件,如10MB,20MB甚至50MB或更高。除此之外,在上传时,我们将不得不创建几个不同大小的缩略图和存储。这本身会延迟上传过程,并会给服务器带来额外的压力。

任何人都可以帮我找到最好的上传方法,以便为用户加快速度并节省服务器压力。像Facebook这样的网站如何管理上传?经过大量研究后,我提出了以下解决方案,但它们可能还不够。 Node js或React js可以帮助上传过程吗?

我的发现:  1.上传单个图像,然后在服务器上创建缩略图并保存。 (这将节省一些带宽但增加服务器工作)

  1. 获取用户计算机上的图像创建缩略图(使用javascript)并在服务器上传(这将占用更多带宽,因为我们在不同大小的服务器上上传相同的图像但保存服务器工作)

    < / LI>
  2. 上传原始尺寸的单张图片,当我们需要不同的尺寸时,使用服务器端脚本即时生成所需的缩略图

  3. 此外,似乎更快的响应时间,我们可以使用像AMAZON S3这样的存储服务(从长远来看这将非常有用,但是客户端不想使用亚马逊,因为它会越来越昂贵将来存储越来越多的图像)

    我提前感谢你

2 个答案:

答案 0 :(得分:0)

您的客户端听起来像一个可能没有大量现有用户群的初创公司?没有经验的创始人经常非常重视“可扩展性”功能,例如“如果用户每个月上传1TB的新图像会增加多少成本?”。

这些几乎总是过早的优化,在您尝试证明您的产品市场合适时,您的开发时间可能比前6到12个月的图像托管成本更高。

我建议你选择像cloudinary.com这样的东西。用户可以直接上传到他们的服务器,这样您就不必处理任何负载,他们会随时为您创建任何所需尺寸的缩略图。

一旦您拥有足够的牵引力并且您的云计算费用可以保证,您就可以聘请经验丰富的开发/开发团队来构建您自己的基础架构,用于托管,备份和调整图像大小。

答案 1 :(得分:0)

您还可以使用nginx,Operesty和lua设置动态图像处理服务器。这是链接 - Image Server

如果您有兴趣编写自己的代码来创建缩略图,我建议您,对于此过程,您应该使用FFmpeg和Java。我已经将FFmpeg与Node.js和Java一起使用。

FFmpeg是cpu insentive进程,如果你的服务器有大量的图像上传流量,那么你需要特定的硬件/高端机器来完成这个过程。

为此目的编写自己的程序是完全没问题,或者可以设置openresty服务器,如果流量较低,可以在流量开始增长时进行扩展。

另一种选择是使用cloudinary来提供动态图像处理以及提供CDN服务。

以下是一些链接,以防您想为上面的

编写自己的代码

Crop-and-scale-image-using-ffmpeg

Transcoding-in-NODEJS-using-FFMPEG

FFmpeg