3

感谢您的评论,以帮助我做出以下决定。

我的要求:

  • 我有一个托管在共享服务器上的站点,我将向我的用户提供内容。大约 60 GB 的内容(大约 2000 个文件,每个文件 30mb。用户一次只能访问 20 个文件),我计算出每月大约 100 GB 的带宽使用量。

  • 一旦用户注册了内容,用户就可以访问链接进行下载。但我希望链接在 7 天内过期,并有可能增加过期时间。

  • 我认为磁盘空间和带宽需要像 Amazon S3 或 Rackspace Cloud 文件这样的服务(或者有替代方案吗?)

  • 为了管理过期,我计划以某种方式获取过期的链接(我认为 S3 具有该功能,而不是 Rackspace)或控制我的数据库上的过期日期并有一个批处理过程,该过程将每天重命名云上的所有 200 个文件和在我的数据库上(如果用户复制了直接链接,第二天它将无法工作,只有我的网页会有更新的链接)。PHP用于编程。

所以你怎么看?云文件托管是要走的路吗?哪一个?以这种方式管理链接是否有意义,或者通过编程很难做到这一点(向云服务器发送命令......)

编辑:一些主机公司在他们的共享计划中有无限的空间和带宽。我问他们的支持人员,他们说他们真的很尊重“无限”的交易。所以每月传输 100 GB 是可以的,唯一需要注意的是 CPU 使用率。因此,共享主机是另一种可供选择的选择..

跟进:因此深入研究后,我发现 Unlimited 计划的 TOS 规定不允许将空间主要用于托管多媒体文件。所以我决定使用 Amazon s3 和 Tom Andersen 提供的解决方案。

感谢您的输入。

4

3 回答 3

2

我个人认为您不一定需要为此使用基于云的解决方案。这可能有点贵。您可以简单地获得专用服务器。想到的一家提供商在其一些最低级别的计划中提供 3,000 GB/月的带宽。那是在 10Mbit 上行链路上;您可以以 10 美元/月的价格升级到 100Mbps,而 1Gbit 的价格为 20 美元/月。我不会提及任何名称,但您可以搜索专用服务器并可能找到您喜欢的服务器。

至于使文件过期,只需在数据库支持的 PHP 中实现即可。您不必四处移动文件,将所有文件存储在网络无法访问的目录中,并使用 PHP 脚本来确定链接是否有效,如果有效,则读取文件内容并将其传递给浏览器。如果链接无效,您可以改为显示错误消息。这是一个非常简单的概念,我认为有很多预先编写的脚本可以做到这一点,但根据您的需要,自己做并不难。

云托管有优势,但现在我认为它的成本很高,如果您不尝试在地理上分散负载或计划同时支持数千个用户并且需要云的弹性,您可以使用专用服务器代替。

希望有帮助。

于 2012-02-03T05:51:16.513 回答
2

我不能代表 S3,但我使用 Rackspace Cloud 文件和服务器。

好处是您无需为传入带宽付费,因此上传非常便宜。

我会这样做:

  1. 将您需要的所有文件上传到“私人”容器
  2. 创建启用 CDN 的公共容器
  3. 这会给你一个特殊的网址,比如http://c3214146.r65.ce3.rackcdn.com
  4. 为您的域创建自己的 CNAME DNS 记录指向它,例如:http ://cdn.yourdomain.com
  5. 当用户请求文件时,使用长随机文件名的COPY api操作将服务器端从私有容器复制到公共容器。
  6. 将文件名存储在应用程序的 mysql 数据库中
  7. 一旦文件过期,使用DELETE api 操作,然后使用PURGE api 操作将其从 CDN 中取出 .. 最后从 mysql 表中删除记录。

使用 PURGE 命令..我听说它不能 100% 工作,它可能会使文件多留一天.. 在文档中它说保留它仅用于紧急情况。

编辑:我刚刚听说,每天有 25 次清除的限制。

但是就我个人而言,我刚刚对对象使用了 delete 并发现它立即从 CDN 中取出。总之,最坏的情况是文件在删除后的 24 小时内仍然可以在某些 CDN 节点上访问。

编辑:您可以更改 CDN 节点上的 TTL(缓存时间).. 默认为 72 小时,因此可能需要将其设置为更低的值.. 但不会太低以至于失去 CDN 的优势。

我发现 CDN 的优点是:

  1. 它将内容直接推送给远离美国服务器的最终用户,并为他们提供超快的下载时间
  2. 如果您有一个超级流行的文件.. 当 1000 人开始尝试下载它时,它不会删除您的网站.. 因为他们都会将副本推出他们最接近的任何 CDN 节点。
于 2012-02-06T03:23:24.397 回答
1

您不必每天都在 S3 上重命名文件。只需将它们设为私有(这是默认设置),并将一天或一周的时间限制 URL 分发给任何获得授权的人。

我会考虑使链接仅在 20 分钟内有效,以便用户必须重新登录才能重新下载文件。然后他们甚至不能分享他们从你那里得到的链接。

于 2012-02-03T20:30:11.997 回答