Next.js 8 Webpack Memory Improvements

Bài tóm tắt Vercel 2019 2. Tăng trưởng Độ khó: Trung bình

Vercel · 2019 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc

Bối cảnh

  • next build cho project vài trăm trang ngốn RAM, đôi khi vượt trần heap khoảng 1,4 GB của Node.js; theo Vercel, framework phải chạy tốt từ một đến hàng nghìn trang.

Thay đổi chính

  • Profile cho thấy webpack có một lần cấp phát 548 MB, tăng theo số trang.
  • Song song vô hạn: bước ghi asset ghi mọi file cùng lúc. Giới hạn 15 file đồng thời thì còn 34 MB, nhưng build thật vẫn hết RAM.
  • Cache vô ích: CachedSource giữ kết quả source() trong RAM dù không plugin nào gọi lại sau khi ghi. Cùng tác giả webpack, họ thêm output.futureEmitAssets: còn 182 KB; Next.js 8 bật sẵn.

Bài học cho SWE

  • "Làm tất cả cùng lúc" đẩy RAM tăng theo N; giới hạn đồng thời giữ RAM gần phẳng.
  • Chỉ cache khi có người đọc lại; chặn song song xong, profile tiếp mới lộ ra cache.

Liên quan