如何在 nodejs 中的多次运行之间保留临时文件?
How to keep temporary files between multiple runs in nodejs?
我有一个生成文件的小节点模块。
因为它真的很慢,而且对于相同的输入会产生相同的结果,所以我想将最后一次编译与控制散列一起保存。
现在的问题是我必须将临时文件放在哪里以便于访问?
如果依赖于我的模块的主节点应用程序重新启动,缓存应该也可以工作。
我会将我所有的评论收集到一个答案中。
据我所知,对于模块放置临时文件的位置没有 NPM 标准。放置它们的最佳位置取决于文件权限的配置方式、您使用的操作系统 运行、主机应用 运行 的权限、托管环境的类型等...
逻辑选项如下:
- 在 OS 临时目录中
- 在模块目录下面的
temp
子目录中。
- 在模块用户可以通过配置参数或环境变量指定的可配置目录中。
您可以通过 os.tmpdir()
.
找到 OS 临时目录的位置
模块下的一个temp
子目录。请记住,可以有多个进程使用一个模块,因此如果您将文件放在一个可能由多个进程共享的位置,那么如果文件应该是每个进程分开的,则您需要使用生成的唯一名称或如果文件应该在进程之间共享,则适当锁定。
而且,不要忘记清理维护,这样就不会随着时间的推移积累临时文件。
我有一个生成文件的小节点模块。
因为它真的很慢,而且对于相同的输入会产生相同的结果,所以我想将最后一次编译与控制散列一起保存。
现在的问题是我必须将临时文件放在哪里以便于访问?
如果依赖于我的模块的主节点应用程序重新启动,缓存应该也可以工作。
我会将我所有的评论收集到一个答案中。
据我所知,对于模块放置临时文件的位置没有 NPM 标准。放置它们的最佳位置取决于文件权限的配置方式、您使用的操作系统 运行、主机应用 运行 的权限、托管环境的类型等...
逻辑选项如下:
- 在 OS 临时目录中
- 在模块目录下面的
temp
子目录中。 - 在模块用户可以通过配置参数或环境变量指定的可配置目录中。
您可以通过 os.tmpdir()
.
模块下的一个temp
子目录。请记住,可以有多个进程使用一个模块,因此如果您将文件放在一个可能由多个进程共享的位置,那么如果文件应该是每个进程分开的,则您需要使用生成的唯一名称或如果文件应该在进程之间共享,则适当锁定。
而且,不要忘记清理维护,这样就不会随着时间的推移积累临时文件。