Heroku中的临时文件会发生什么(节点应用程序)

时间:2017-09-18 15:18:35

标签: node.js heroku amazon-s3

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

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

1 个答案:

答案 0 :(得分:2)

在Heroku中,每个dyno都有自己的短暂文件系统,并带有最近部署的代码的全新副本。

通常,短暂的文件系统就像任何文件系统一样。您有权写入的目录,例如/tmp,您可以将文件写入。

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

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

heroku run bash
df -h /tmp

另请注意,slug是应用程序的压缩和预打包副本,文件不会存储在slug中,而是存储在dyno的短暂文件系统中。您的用例非常不可能真正证明必须从dyno的短暂文件系统中删除文件。

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