Edge and Node.js Runtimes
Next.js の文脈では、ランタイムとは、実行中のコードが利用できるライブラリ、API、および一般的な機能の集合を指します。
サーバーには、アプリケーションの一部がレンダリングされる 2 つのランタイムがあります。
- Node.js Runtime(デフォルト)は、エコシステムのすべての Node.js API と互換性のあるパッケージにアクセスできます
- Edge RuntimeはWeb APIをベースとします
ランタイムの違い
ランタイムを選択する際には多くの考慮するべき点があります。この表は、主な違いを一目で確認できます。違いについてより詳しく分析したい場合は、以下のセクションをチェックしてください。
Node | Serverless | Edge | |
---|---|---|---|
Cold Boot | / | Normal | Low |
HTTP Streaming | Yes | Yes | Yes |
IO | All | All | fetch |
スケーラビリティ | / | High | Highest |
セキュリティ | Normal | High | High |
レイテンシー | Normal | Low | Lowest |
npm パッケージ | All | All | A smaller subset |
静的レンダリング | Yes | Yes | No |
動的レンダリング | Yes | Yes | Yes |
fetch によるデータの再検証 | Yes | Yes | Yes |
Edge Runtime
Next.js では、軽量な Edge Runtime は Node.js API の一部を提供します。
Edge ランタイムは、小さくシンプルな関数を使って低レイテンシーで動的でパーソナライズされたコンテンツを提供する必要がある場合に理想的です。Edge Runtime の高速性は、リソースの使用が最小化されていることに由来しますが、多くのシナリオではそれが制約になる可能性があります。
例えば、Vercel 上の Edge Runtime で実行されるコードは、1MB から 4MB を超えることはできません。この制限には、インポートされたパッケージ、フォント、ファイルが含まれ、デプロイメントインフラストラクチャによって異なります。