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 buildcho 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:
CachedSourcegiữ 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êmoutput.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
#webpack#memory profiling#next build#Serverless Next.js#compilation.assets#CachedSource#semaphore#output.futureEmitAssets#heap Node.js
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (2)