我有一个免费的 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/