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' // hoặc 'nodejs' (mặc định)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.
Bẫy hay gặp: đặ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.