readFile是否缓存内容?

时间:2016-03-27 16:11:24

标签: node.js readfile fs

说我有:

var fs = require('fs');
var a= fs.readFile(__dirname + '/someBigFile.txt', function(err, data) {
    console.log(data);
});

我注意到,如果它首先花费2秒钟来读取someBigFile,现在需要几毫秒。是否有一些内部缓存是Node.js多次读取时发生的?例如:

for(var i =0; i < 10000; i++)
{
    var greet = fs.readFile(__dirname + '/greet.txt', "utf-8", function(err, data) {
    });
}

4 个答案:

答案 0 :(得分:1)

简单的答案是 - 它不像node.js那样是内部缓存。

但是如果你正在阅读相同的文件和目录,你可以将fs模块包裹在cached read-only version加速的内容中多次,光盘上的东西不会改变。

答案 1 :(得分:0)

没有。它可能是您的存储系统缓存(在某些情况下可能是操作系统或一些其他软件缓存)。尝试将一些数据写入文件并尝试再次阅读。

答案 2 :(得分:0)

所以我遇到了这个问题但是在不同的上下文中,我编写了一个节点js服务器,它读取网络驱动器上的文本文件,对我来说基本上是只读的,但是,另一个应用程序偶尔会写入该文件我想立即看到这些变化。我的节点js应用程序一直在阅读文件的陈旧版本,尽管我可以看到文件已更改。

我在阅读完帮助后解决了这个问题并添加了一个&#39; rs&#39;绕过系统本地文件缓存https://nodejs.org/api/fs.html#fs_file_system_flags

   fs.readFile( path,  {"flag": 'rs'} , (err, data) => {} ) 

答案 3 :(得分:0)

fs模块不会缓存已读取的内容。

但是,如果您需要缓存版本,并且(幸运地)尝试读取JSON文件缓存,则可以使用require。它确实读取并缓存。