Cloudinary 推荐用法

Cloudinary recommended usage

我有一个 angular/react 客户端和 NodeJS 服务器。 我的客户会将图片上传到他们的个人资料中,我将把它们存储在 cloudinary 中。 很好奇这里推荐的路径是什么,因为我可以看到 2 种方法 pro/cons 每个

  1. 我可以 post 将图像从网络传输到我的 NodeJS 服务器,然后传输到 cloudinary
  2. 我可以把图片直接从网上上传到cloudinary,然后把客户端的URL传给我。

方法 #1 更安全 - 我控制 flow/upload 方法 #2 更快 - 文件不会通过我的服务器路由并直接进入 cloudinary

我很感激 thoughts/remarks/recommended 用法 - 因为我无法通过 cloudinary 找到任何...

下面列出了每种方法的优缺点。

Server-side 上传

优点:

  • 在继续上传到 Cloudinary 之前,您可以拥有自己的自定义逻辑和验证
  • 您可以轻松地动态应用许多额外的优化和转换,而无需为每个需要的场景提前设置多个未签名的上传预设
  • 如果需要,它允许您在将资产上传到 Cloudinary 之前将其存储在自己的存储桶中。

缺点:

  • 上传时间更长。资产被上传两次。一次从客户端的浏览器到您的服务器,第二次从您的服务器到 Cloudinary。
  • 浪费您可能必须为托管服务(即 AWS)付费的服务器资源 - 计算、带宽、存储。

Client-side 上传

优点:

  • 正如你所说,它更快,因为一旦客户端完成上传资产,上传就完成了,不需要从你的服务器第二次上传到 Cloudinary。
  • 使用 Cloudinary 的可选快速实现 Upload Widget
  • 你一天上传一次或者一百万次,这对你的服务器没有影响。您无需关心处理上传队列的瓶颈,扩展您的服务器,当然,您再次节省了此操作的成本。最重要的是,当同时上传发生时,您客户的用户体验和加载时间不会受到影响。

缺点:

  • 您必须为上传使用上传预设。您不能只在 client-side 代码中 add/modify Cloudinary 的优化和转换参数,除非您签署请求。生成签名只能在 server-side 上完成,这样你就不会公开你的 API 秘密。因此,这需要您将每个请求的有效负载发送到您的服务器以在实际发送请求之前取回签名。这导致每次 client-side 上传毕竟都依赖于您的服务器,尽管不必处理实际的上传,这会消耗更多资源。

您还应注意,如果您还使用管理或搜索 API,则永远不应从 client-side 执行这些操作,因为这些是需要完整凭据身份验证的管理操作。因此,如果您确实要使用它,您将不可避免地需要为这些实现 server-side。

总而言之,没有一种方法最终优于另一种方法。这实际上取决于您的用例、需求和偏好。