【问题标题】:No permanent filesystem for Heroku?Heroku 没有永久文件系统?
【发布时间】:2012-08-20 19:46:03
【问题描述】:

我目前在 Heroku 上托管的应用程序允许用户提交照片。最初,我正在考虑将这些照片存储在文件系统中,因为将它们存储在数据库中显然是一种不好的做法。

然而,Heroku 上似乎没有永久的文件系统,只有一个短暂的文件系统。这是真的吗?如果是的话,我在存储照片和其他文件方面有哪些选择?

【问题讨论】:

    标签: heroku


    【解决方案1】:

    这是真的。 Heroku 允许您创建云应用程序,但这些云应用程序不是“永久的”——它们是可以在 Amazon 的 EC2 上多次复制的实例(或“slug”)(这就是为什么使用 Heroku 可以轻松进行扩展)。如果您要推送应用程序的新版本,那么 slug 将被重新编译,并且您在之前的实例中保存到文件系统的所有文件都将丢失。

    您最好的选择(无论是在 Heroku 还是其他方式)是将用户提交的照片保存到 CDN。由于您在 Heroku 上,而 Heroku 使用 AWS,我推荐使用 Amazon S3,可选择启用 CloudFront。

    这不仅是因为它绕过了 Heroku 的短暂“限制”,而且因为 CDN 速度更快,并且将为您的 web 应用程序和用户体验提供更好的服务。

    【讨论】:

      【解决方案2】:

      根据您使用的技术,您最好的选择可能是将上传内容流式传输到 S3(亚马逊的存储服务)。您可以通过客户端库与 S3 交互,以简化发布和检索文件。 Boto 是 Python 的示例客户端库 - 它们适用于所有流行语言。

      要记住的另一件事是 Heroku 文件系统也不是共享的。这意味着您必须使用与处理上传的应用程序相同的应用程序(而不是工作进程)将文件放入 S3。如果可以,请尝试将上传内容加载到内存中,切勿将其写入磁盘并直接发布到 S3。这将提高您的上传速度。

      因为 Heroku 托管在 AWS 上,所以到 S3 的流以非常高的速度发生。在本地开发时请记住这一点。

      【讨论】:

        猜你喜欢
        • 2021-12-26
        • 2019-11-11
        • 1970-01-01
        • 1970-01-01
        • 2020-08-17
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        相关资源
        最近更新 更多