Я знаю, что при разработке в node вы всегда должны стараться избегать блокировки (синхронизации) и работать с асинхронными функциями, однако я немного тестирую, как они сравниваются.
Мне нужно открыть json файл, содержащий данные i18n (например, формат даты и времени и т.д.) и передать эти данные классу, который использует эти данные для форматирования чисел и т.д. в моих представлениях.
Было бы неловко начать обматывать все методы класса внутри обратных вызовов, поэтому, если это возможно, я бы использовал вместо него синхронную версию.
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 примерно в 150 раз быстрее, чем fs.readFile, и занимает около 1 мс, чтобы загрузить файл размером 50 КБ json (minified). Все мои файлы json составляют около 50-100 КБ.
Я тоже думал, может быть, каким-то образом запоминаю или сохраняю эти данные json на сеанс, чтобы файл читался только один раз за сеанс (или когда пользователь меняет свой локаль). Я не совсем уверен, как это сделать, это просто идея.
Можно ли использовать fs.readFileSync
в моем случае или я получу проблемы позже?