node.js - Heroku(Node 应用程序)中的临时文件会发生什么情况

标签 node.js heroku amazon-s3

我有一个免费的 Heroku 帐户,我的 Node 应用程序使用 Amazon S3 来存储文件。我使用 s3fs 模块和多方中间件,它首先临时存储文件,然后将其上传到 S3。

文件上传并在 fs 中取消链接后,在本地开发期间该文件仍然保留在我的本地临时文件夹中。我在 Heroku 应用程序上部署了相同的代码,我担心是否有任何方法可以每天检查临时文件夹或删除它,因为该应用程序的 slug 大小限制为 500mb,并且上传的文件甚至可能超过 100MB。

最佳答案

在 Heroku 中,每个 dyno 都有自己的临时文件系统,其中包含最近部署的代码的新副本。

一般来说,临时文件系统的工作方式与任何文件系统一样。您有权写入的目录,例如 /tmp,您可以向其中写入文件。

在 dyno 的生命周期内,其运行进程可以使用文件系统作为临时暂存器,并且在 dyno 停止、重新启动或回收时写入的任何文件都将被丢弃。

如果您将临时文件存储在 /tmp 文件夹中,您可以运行 df 来检查已用空间和可用空间:

heroku run bash
df -h /tmp

另请注意,slug 是应用程序的压缩和预打包副本,文件不存储在 slug 内,而是存储在 dyno 的临时文件系统中。您不太可能有一个用例真正证明必须从 dyno 的临时文件系统中删除文件。

总之,您不必担心每天删除 tmp 文件夹,因为在 dyno 停止或重新启动时写入的任何文件都将被丢弃,或者作为正常 dyno 管理的一部分,大约每天一次被丢弃.

关于node.js - Heroku(Node 应用程序)中的临时文件会发生什么情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46282883/

相关文章:

node.js - Openshift 无法加载 c++ bson 扩展/找不到模块 ('swig' )

javascript - 检查值是否是 JavaScript 中的符号

node.js - 通过 NodeJS SDK (aws-sdk-js) 对 AWS SQS 的访问被拒绝(突然!!)

ruby-on-rails - 从 Heroku 建立与/Amazon s3 的连接

javascript - Node express : Unrecognized content-type

python - 操作系统错误: PortAudio library not found

ruby-on-rails - 使用 Heroku 来 db :pull a new database

django - 从 Heroku 上托管的 Django 项目的子目录运行非 Django 命令?

amazon-web-services - AWS CLI 创建文件夹并上传文件

ssl - 使用SDK时S3 Protocol是否加密传输?