Hai runtime khác nhau ở môi trường thực thi, không chỉ ở vị trí địa lý.
| Edge | Node | |
|---|---|---|
| Khởi động | gần như tức thì | có cold start |
| API | tập con Web API (fetch, Request, Web Crypto) | đầy đủ Node (fs, net, crypto, native addon) |
| Giới hạn | bộ nhớ và thời gian chạy chặt | rộng hơn nhiều |
| Kết nối DB | phải qua HTTP/driver serverless | TCP pool bình thường |
export const runtime = 'edge' // Next 16: 'edge' đã deprecated, mặc định và khuyến nghị là 'nodejs'Chọn Edge khi: việc cần làm nhẹ và phụ thuộc độ trễ tới người dùng — kiểm tra phiên/redirect, A/B test, geo routing, personalize header, stream token từ một API AI. Đây cũng chính là lý do middleware chạy trên Edge.
Chọn Node khi: cần thư viện Node thật — Prisma với TCP, sharp xử lý ảnh, SDK của bên thứ ba dùng crypto của Node, đọc file, xử lý nặng CPU. Đây nên là mặc định; chỉ chuyển sang Edge khi đo được lợi ích.
Lưu ý: từ Next 16, Edge runtime đã deprecated và tài liệu khuyên bỏ hẳn dòng export const runtime, nên bảng so sánh trên chủ yếu dùng khi bảo trì code cũ. Sai lầm hay gặp là đặt runtime = 'edge' cho route có truy vấn database rồi lỗi lúc build vì driver dùng net. Và Edge ở gần người dùng không có nghĩa là nhanh hơn — nếu database nằm ở một region cố định, mỗi truy vấn lại đi vòng xa hơn so với đặt hàm ngay cạnh database.