我知道在 node 中开发时,您应该始终尽量避免阻塞(同步)函数并使用异步函数,但是我进行了一些测试以查看它们的比较。
我需要打开一个包含 i18n 数据(如日期和时间格式等)的 json 文件,并将该数据传递给一个类,该类使用该数据在我的视图中格式化数字等。
开始将所有类的方法包装在回调中会有点尴尬,所以如果可能的话,我会改用同步版本。
console.time('one');
console.time('two');
fs.readFile( this.dir + "/" + locale + ".json", function (err, data) {
if (err) cb( err );
console.timeEnd('one');
});
var data = fs.readFileSync( this.dir + "/" + locale + ".json" );
console.timeEnd('two');
这会在我的控制台中产生以下几行:
two: 1ms
one: 159ms
似乎 fs.readFileSync 比 fs.readFile 快大约 150 倍,加载一个 50KB 的 json 文件(缩小)大约需要 1 毫秒。我所有的 json 文件都在 50-100KB 左右。
我还在想也许以某种方式将这个 json 数据存储或保存到会话中,以便每个会话(或当用户更改其语言环境时)只读取一次文件。我不完全确定如何做到这一点,这只是一个想法。
可以fs.readFileSync
在我的情况下使用还是我以后会遇到麻烦?