Trung BìnhNode.js iconNode.js

Sự khác biệt giữa fs.readFile và fs.readFileSync là gì?

readFileSync blocking — giữ event loop hoàn toàn cho đến khi OS trả data, không xử lý request nào khác trong thời gian đó. readFile non-blocking — gửi I/O request đến libuv thread pool, event loop tự do xử lý requests khác.

Impact thực tế: readFileSync đọc file 50ms trên server 1000 req/s → mỗi request xếp hàng bị delay 50ms cộng dồn → latency spike hàng giây.

Khi sync chấp nhận được:

  1. module initialization trước server.listen()const config = JSON.parse(fs.readFileSync('config.json', 'utf8')) chạy một lần duy nhất lúc startup, không có traffic;
  2. CLI tools;
  3. build scripts

Quy tắc: bất kỳ code nào chạy SAU server.listen() trong request path — bắt buộc dùng async.

Đo blocking: node --prof app.jsnode --prof-process isolate-*.log → readFileSync trong hot path hiện rõ ràng với % CPU time.

Xem toàn bộ Node.js cùng filter theo level & chủ đề con.

Mở danh sách Node.js