代码之家  ›  专栏  ›  技术社区  ›  Usman Shaukat

shopify应用程序的存储服务

  •  -1
  • Usman Shaukat  · 技术社区  · 6 年前

    1 回复  |  直到 6 年前
        1
  •  0
  •   David Lazar    6 年前

    这很简单。每次客户使用你的服务上传内容,你都知道。因此,在应用程序中用简单的数据结构记录事件。如果客户超过了某个限制,就处理它。你在开车,所以你可以告诉他们要么多付点钱,要么下车,要么保持原样。amazons3是如此便宜,它永远不会花你的钱,任何客户花你钱的可能性是如此之低,你有大约十分钟的工作在你前面,使这个简单的代码块的事情,并从那里开始。

        2
  •  0
  •   Usman Shaukat    4 年前

    对于其他面临同样情况的人,以下是我最终要做的

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

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

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