readFile 是不是缓存内容?
Posted
技术标签:
【中文标题】readFile 是不是缓存内容?【英文标题】:Does readFile caches the content?readFile 是否缓存内容? 【发布时间】:2016-07-14 23:00:45 【问题描述】:说我有:
var fs = require('fs');
var a= fs.readFile(__dirname + '/someBigFile.txt', function(err, data)
console.log(data);
);
我注意到,如果首先读取 someBigFile
需要 2 秒,现在则需要几毫秒。当您多次阅读 Node.js 时,是否会发生一些内部缓存?例如:
for(var i =0; i < 10000; i++)
var greet = fs.readFile(__dirname + '/greet.txt', "utf-8", function(err, data)
);
【问题讨论】:
我的回答对你有用吗? 【参考方案1】:所以我遇到了这个问题,但在不同的上下文中,我编写了一个节点 js 服务器,它读取网络驱动器上的文本文件,这对我来说本质上是只读的,但是,另一个应用程序偶尔会写入该文件并我想立即看到这些变化。尽管我可以看到文件已更改,但我的 Node js 应用程序一直在读取文件的陈旧版本。
我在阅读帮助后解决了它并添加了一个绕过系统本地文件缓存的“rs”https://nodejs.org/api/fs.html#fs_file_system_flags
fs.readFile( path, "flag": 'rs' , (err, data) => )
【讨论】:
在文档中他们只提到了“r”、“r+”、“rs+”。那么你在哪里找到这个“rs”选项?【参考方案2】:没有。它可能是您的存储系统缓存(在某些情况下,它可能是操作系统或一些额外的软件缓存)。尝试将一些数据写入文件并尝试再次读取。
【讨论】:
【参考方案3】:简单的答案是 否 - 这不是像 node.js 中那样的内部缓存。
但是如果您多次读取相同的文件和目录,您可以将 fs
模块包装在 cached read-only version 中以加速事情,而事情并没有'不要在光盘上更改。
【讨论】:
【参考方案4】:fs
模块不会缓存它读取的内容。
但是,如果您需要缓存版本并且(幸运地)尝试读取 JSON 文件缓存,您可以使用 require
。它会读取和缓存。
【讨论】:
以上是关于readFile 是不是缓存内容?的主要内容,如果未能解决你的问题,请参考以下文章
readfile & file_get_contents异同
console.log 不是 nodejs fs.readfile 中的函数
使用 require vs fs.readFile 读取 json 文件内容