目录
Edge 和 Node.js 运行时
在 Next.js 的上下文中,运行时指的是在执行过程中可用于代码的一组库、API 和一般功能。
在服务器上,有两种运行时可以渲染您的应用程序代码的部分:
- Node.js 运行时(默认)具有对所有 Node.js API 和生态系统中兼容的包的访问权限。
- Edge 运行时基于 Web API。
运行时差异
在选择运行时时需要考虑许多因素。以下表格快速查看了主要差异。如果您想要更深入地分析差异,请查看下面的各节。
| Node | Serverless | Edge | |
|---|---|---|---|
| Cold Boot | / | Normal | Low |
| HTTP Streaming | Yes | Yes | Yes |
| IO | All | All | fetch |
| Scalability | / | High | Highest |
| Security | Normal | High | High |
| Latency | Normal | Low | Lowest |
| npm Packages | All | All | A smaller subset |
| Static Rendering | Yes | Yes | No |
| Dynamic Rendering | Yes | Yes | Yes |
| Data Revalidation w/ fetch | Yes | Yes | Yes |
Edge 运行时
在 Next.js 中,轻量级的 Edge 运行时是可用 Node.js API 的一个子集。
Edge 运行时非常适合在低延迟下提供动态、个性化内容的情况,其函数简单且资源利用极小,因此速度快。 但在许多场景下,这可能是有限制的。
例如,在 Vercel 上执行的 Edge Runtime 中的代码不能超过 1 MB 到 4 MB 之间。 这个限制包括导入的包、字体和文件,具体取决于您的部署基础设施。
Node.js 运行时
使用 Node.js 运行时可以让您访问所有 Node.js API,以及依赖于这些 API 的所有 npm 包。 然而,与使用 Edge 运行时的路由相比,它启动速度不如后者快。
将 Next.js 应用程序部署到 Node.js 服务器将需要管理、扩展和配置基础设施。 或者,您可以考虑将 Next.js 应用程序部署到 Vercel 等无服务器平台,该平台将为您处理这些事务。