shopify应用程序的存储服务

时间:2018-10-05 22:05:07

标签: javascript php shopify saas data-storage

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

2 个答案:

答案 0 :(得分:0)

这很简单。每次客户使用您的服务上载内容时,您都知道。因此,将事件记录在应用程序中的简单数据结构中。如果客户超出某个限制,请进行处理。您正在驾驶公共汽车,因此您可以告诉他们支付更多费用,下车或保留一切。 Amazon S3是如此便宜,它永远不会花钱,而且任何客户花钱的可能性都非常低,您需要大约十分钟的工作来制作此简单的代码块,然后再去做。

答案 1 :(得分:0)

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

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

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

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