Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript shopify应用程序的存储服务_Javascript_Php_Shopify_Saas_Data Storage - Fatal编程技术网

Javascript shopify应用程序的存储服务

Javascript shopify应用程序的存储服务,javascript,php,shopify,saas,data-storage,Javascript,Php,Shopify,Saas,Data Storage,我正在为Shopify开发一个在线产品设计工具。该应用程序将托管在我的web服务器上。用户将在其网页上放置JavaScript代码。代码将在iframe中打开我的应用程序(具有讽刺意味的是,Shopify应用程序就是这样工作的)。然后,用户可以使用该工具创建设计,并将生成的图像保存在我的web服务器上。我想要的是将用户生成的图像上传到存储服务器,而不是将它们存储在我的web服务器上。我正在寻找一种服务/解决方案,允许我的应用程序在注册期间为用户创建存储帐户,并指定允许的最大存储空间。该服务还应该

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

这很简单。每次客户使用您的服务上传内容时,您都知道这一点。因此,在应用程序中以简单的数据结构记录事件。如果客户超出某个限制,请处理它。你在开车,所以你可以告诉他们要么多付点钱,要么下车,要么保持原样。Amazon S3非常便宜,永远不会花你的钱,而且任何客户花你钱的可能性非常低,你有大约十分钟的时间来完成这个简单的代码块,然后从那里开始。

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

  • 在与S3兼容的存储上创建了一个存储桶。使此bucket公开可访问,因为它将包含静态资产,如图像
  • 为此bucket中的每个用户创建了一个文件夹
  • 跟踪每个用户文件夹的大小。据我所知,S3存储不提供获取文件夹大小的方法,因此我最终获取文件夹中所有对象的列表并将其大小相加。我们只在上传或删除文件时计算大小,并将大小保存在数据库中
  • @chris建议每个用户一个桶是好的,最初我实施了这个策略,但在后来的阶段我遇到了一个障碍。我发现S3不允许您通过HTTPS访问内容。要通过HTTPS访问内容,我们必须使用Cloudflare或任何其他CDN,您可以在其中创建(HTTPS)区域并指定bucket作为其来源。由于每个用户有一个bucket,我们需要为每个新用户创建一个新区域。这种情况并不理想,因为许多CDN会对创建的每个新区域收取额外费用。所以我们决定为所有用户使用一个bucket,并为该bucket中的每个用户创建一个文件夹。然后,我们在CDN上创建了一个区域,并将bucket的公共路径指定为CDN区域的原点


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

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