【问题标题】:Storage service for a shopify applicationshopify 应用程序的存储服务
【发布时间】:2018-10-05 22:05:07
【问题描述】:

我正在为 Shopify 开发在线产品设计工具。该应用程序将托管在我的网络服务器上。用户将在他的网页上放置一个 JavaScript 代码。该代码将在 iframe 中打开我的应用程序(具有讽刺意味的是,这就是 Shopify 应用程序的工作方式)。然后,用户可以使用该工具创建设计并将生成的图像保存在我的 Web 服务器上。我想要的是将用户生成的图像上传到存储服务器,而不是将它们存储在我的网络服务器上。我正在寻找一种服务/解决方案,允许我的应用在注册期间为用户创建存储帐户并指定允许的最大存储空间。该服务还应允许通过 API 上传文件。上传的文件应该可以通过 URL 访问。该服务还应该能够基于每个用户提供分析。

【问题讨论】:

  • AWS S3?每个用户一个桶?
  • @Chris S3 是一个不错的选择,但您不能限制存储桶的大小。对于大小限制,必须将逻辑添加到我试图避免的应用程序中。

标签: javascript php shopify saas data-storage


【解决方案1】:

这很简单。每次客户使用您的服务上传内容时,您都会知道。因此,在您的 App 中以简单的数据结构记录事件。如果客户超过某个限制,请处理它。您正在驾驶公共汽车,因此您可以告诉他们支付更多费用、下车或保持原样。 Amazon S3 非常便宜,它永远不会花钱,而且任何客户花钱的可能性都非常低,你有大约十分钟的工作时间来让这个简单的代码阻止一个东西,然后从那里开始。

【讨论】:

    【解决方案2】:

    对于面临同样情况的其他人,这就是我最终做的事情

    1. 在 S3 兼容存储上创建了一个存储桶。将此存储桶设为可公开访问,因为它将包含图片等静态资产。
    2. 为此存储桶中的每个用户创建了一个文件夹。
    3. 跟踪每个用户文件夹的大小。据我所知,S3 存储不提供获取文件夹大小的方法,因此我最终获取了文件夹中所有对象的列表并将它们的大小相加。我们仅在上传或删除文件时计算大小并将大小保存在数据库中。

    @chris 建议每个用户一个存储桶是好的,最初我实施了这个策略,但在后期我遇到了障碍。我发现 S3 不允许您通过 HTTPS 访问内容。要通过 HTTPS 访问内容,我们必须使用 Cloudflare 或任何其他 CDN,您可以在其中创建 (https) 区域并将存储桶指定为其来源。每个用户一个桶,我们需要为每个新用户创建一个新区域。这种情况并不理想,因为许多 CDN 会为每个创建的新区域收取额外费用。所以我们决定为所有用户使用一个存储桶,并在这个存储桶中为每个用户创建一个文件夹。然后,我们在 CDN 上创建了一个区域,并将存储桶的公共路径指定为 CDN 区域的来源。

    我们还计划限制一个桶的数据不超过 100 个用户,并在每增加 100 个用户后创建一个新桶。

    【讨论】:

      猜你喜欢
      • 2011-09-29
      • 2018-05-27
      • 2018-04-04
      • 1970-01-01
      • 2018-05-24
      • 2021-08-12
      • 2022-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多