Edge 與 Node.js 執行環境

在 Next.js 的上下文中,執行環境 (runtime) 指的是您的程式碼在執行期間可使用的函式庫、API 和通用功能的集合。

在伺服器端,您的應用程式碼可以在兩種執行環境中渲染:

  • Node.js 執行環境 (預設) 可存取所有 Node.js API 和生態系中的相容套件。
  • Edge 執行環境 基於 Web API

執行環境差異

選擇執行環境時有許多考量因素。下表簡要顯示主要差異。如需更深入的分析,請查看以下各節。

NodeServerlessEdge
冷啟動/~250ms即時
HTTP 串流
IO全部全部fetch
擴展性/最高
安全性一般
延遲一般最低
npm 套件全部全部較小子集
靜態渲染
動態渲染
使用 fetch 重新驗證資料

Edge 執行環境

在 Next.js 中,輕量級的 Edge 執行環境是 Node.js API 的一個子集。

如果您需要以低延遲提供動態、個人化的內容,且使用小型簡單的函式,Edge 執行環境是理想選擇。Edge 執行環境的速度來自於其對資源的最小化使用,但在許多情況下可能會有限制。

例如,在 Edge 執行環境中執行的程式碼 在 Vercel 上不能超過 1 MB 至 4 MB,此限制包括導入的套件、字型和檔案,並會根據您的部署基礎架構而有所不同。

Node.js 執行環境

使用 Node.js 執行環境可讓您存取所有 Node.js API 和依賴它們的所有 npm 套件。然而,它的啟動速度不如使用 Edge 執行環境的路由。

將 Next.js 應用程式部署到 Node.js 伺服器需要管理、擴展和配置您的基礎架構。或者,您可以考慮將 Next.js 應用程式部署到像 Vercel 這樣的無伺服器平台,它會為您處理這些問題。

無伺服器 Node.js

如果您需要一個可擴展的解決方案來處理比 Edge 執行環境更複雜的計算負載,無伺服器是理想選擇。例如,在 Vercel 上的無伺服器函式,您的總程式碼大小為 50MB,包括導入的套件、字型和檔案。

與使用 Edge 的路由相比,缺點是無伺服器函式可能需要數百毫秒才能啟動並開始處理請求。根據您的網站流量,這種情況可能會頻繁發生,因為函式並不經常處於「熱」狀態。

範例

區段執行環境選項

您可以為 Next.js 應用程式中的個別路由區段指定執行環境。為此,宣告並匯出一個名為 runtime 的變數。該變數必須是字串,且值必須是 'nodejs''edge' 執行環境。

以下範例展示了一個頁面路由區段,它匯出了一個值為 'edge'runtime

export const runtime = 'edge' // 'nodejs' (預設) | 'edge'

您也可以在佈局層級定義 runtime,這將使該佈局下的所有路由都在 edge 執行環境中運行:

export const runtime = 'edge' // 'nodejs' (預設) | 'edge'

如果未設定區段執行環境,則會使用預設的 nodejs 執行環境。如果您不打算從 Node.js 執行環境變更,則不需要使用 runtime 選項。

請參閱 Node.js 文件Edge 文件 以獲取完整可用的 API 列表。根據您的部署基礎架構,這兩種執行環境也都支援 串流

On this page