我正在构建一个网站,用户将在其中上传图像,然后图像最终必须存储在 Amazon S3 中。现在,考虑到直接从浏览器上传的可能性,我考虑了以下选项:
- 在浏览器中调整所有三种尺寸,然后直接上传到 S3 - 这可行,但问题是我正在上传多个图像,我怀疑这是一个好方法。
- 将原始图像上传到 S3,在 node.js 中调整大小 - 我想实际上只上传原始图像,然后使用 node.js 调整大小。
2)最好的方法是什么,这样我就可以最大限度地减少我需要部署的服务的占用空间。
感谢任何指针!
干杯维沙尔
我正在构建一个网站,用户将在其中上传图像,然后图像最终必须存储在 Amazon S3 中。现在,考虑到直接从浏览器上传的可能性,我考虑了以下选项:
2)最好的方法是什么,这样我就可以最大限度地减少我需要部署的服务的占用空间。
感谢任何指针!
干杯维沙尔
我不会仅仅因为它不利于用户体验而选择选项 1。
我建议如下:仅将原始图像上传到 s3,然后当客户端请求调整大小的变体时,从 s3 检索它,调整大小并通过 CDN 交付给客户端。
这比一次调整它们的大小要好,因为:
我编写了一个库https://github.com/mgmtio/simgr来帮助我在我的应用程序中执行此操作。
G'day 维沙尔,
我想你最大的图像会比你的小尺寸大得多,这可能是缩略图或其他什么。由于图像文件大小或多或少随着图像的面积而变化,因此这种效果会更加明显。
因此,您创建的任何从 S3 中拉回最大图像以重新缩放的服务都可能比仅从客户端上传所有三个图像的版本使用更多的 S3 带宽!所以只做选项1可能更明智。
编辑:如果您真的想避免上传多个文件,我仍然不会使用 upload-directly-to-S3 选项,因为 a)您必须检测 S3 上的新文件和 b)获取的数据总量如果您将图像接受到您的节点应用程序中,然后在那里调整大小,然后将各种大小保存到 S3 中,那么随处提供的图像仍然会更大。
- - -缺口
我建议使用图像 CDN 来加速图像交付。在这里检查
Amazon S3 很慢,而且图像很重
众所周知,Amazon S3 在直接提供 Web 内容时速度很慢。速度慢的一个原因是存储桶仅位于一个地理位置。创建存储桶时选择位置。例如,如果您的存储桶是在加利福尼亚州的亚马逊服务器上创建的,但您的用户在印度,则图像仍将来自加利福尼亚州。这种地理距离会导致您网站上的图像加载缓慢。
此外,在 S3 上看到非常重的图像并不少见,具有大尺寸和高字节大小。原因只能推测,但大概与发布工作流程和S3作为存储空间的便利性有关。
使用ImageEngine之类的图像交付,同时保持 S3 的工作流程和便利级别。
当我说它实现起来非常简单时,请相信我……我重复一遍非常非常简单。
创建帐户后进行必要的设置后,您只需使用 ImageEngine 域引用图像
http://wq77sh2y.cdn.imgeng.in/path/image.jpg
或者
使用前缀功能的参考图像
http://wq77sh2y.cdn.imgeng.in/http://example.com/path/image.jpeg