Edge и Node.js среды выполнения
В контексте Next.js, среда выполнения относится к набору библиотек, API и общей функциональности, доступной вашему коду во время выполнения.
На сервере есть две среды выполнения, где могут быть рендерены части вашего кода приложения:
- Среда выполнения Node.js (по умолчанию) имеет доступ ко всем API Node.js и совместимым пакетам из экосистемы.
- Среда выполнения Edge основана на Web API.
Отличия сред выполнения
При выборе среды выполнения необходимо учитывать множество аспектов. В этой таблице приведены основные различия. Если вам нужен более глубокий анализ отличий, ознакомьтесь с разделами ниже.
| Node | Serverless | Edge | |
|---|---|---|---|
| Холодный запуск | / | Нормальный | Низкий |
| Потоковая передача HTTP | Да | Да | Да |
| IO | Все | Все | fetch |
| Масштабируемость | / | Высокая | Наивысшая |
| Безопасность | Нормальная | Высокая | Высокая |
| Задержка | Нормальная | Низкая | Самая низкая |
| npm пакеты | Все | Все | Множество меньше |
| Статический рендеринг | Да | Да | Нет |
| Динамический рендеринг | Да | Да | Да |
Перепроверка данных с fetch |
Да | Да | Да |
Среда выполнения Edge
В Next.js, легкая среда выполнения Edge является подмножеством доступных API Node.js.
Среда выполнения Edge идеально подходит, если вам нужно обеспечить динамичное, персонализированное содержимое с низкой задержкой с помощью небольших и простых функций. Скорость среды выполнения Edge обеспечивается минимальным использованием ресурсов, но это может быть ограничением во многих сценариях.
Например, код, выполняемый в среде выполнения Edge на Vercel, не может превышать 1 МБ и 4 МБ. Этот лимит включает импортированные пакеты, шрифты и файлы, и он может варьироваться в зависимости от вашей инфраструктуры развертывания. Кроме того, среда выполнения Edge не поддерживает все API Node.js, что означает, что некоторые npm пакеты могут не работать. Например, могут появиться ошибки «Модуль не найден: невозможно разрешить 'fs'» или аналогичные. Рекомендуется использовать среду выполнения Node.js, если вам нужно использовать эти API или пакеты.
Среда выполнения Node.js
Использование среды выполнения Node.js предоставляет вам доступ ко всем API Node.js и всем npm пакетам, которые от них зависят. Однако, запуск маршрутов с использованием среды выполнения Edge происходит быстрее.
Развертывание вашего приложения Next.js на сервере Node.js потребует управления, масштабирования и настройки вашей инфраструктуры. В качестве альтернативы, вы можете рассмотреть возможность развертывания вашего приложения Next.js на платформе серверless, такой как Vercel, которая возьмет на себя эти задачи.
Серверless Node.js
Серверless идеально подходит, если вам нужна масштабируемое решение, которое может обрабатывать более сложные вычислительные задачи, чем среда выполнения Edge. Например, с помощью Serverless Functions на Vercel, общий размер вашего кода составляет 50 МБ, включая импортированные пакеты, шрифты и файлы.
Недостатком по сравнению с маршрутами, использующими Edge, является то, что запуск Serverless Functions может занимать сотни миллисекунд до начала обработки запросов. В зависимости от количества трафика, поступающего на ваш сайт, это может происходить часто, так как функции не «теплые».
Обратитесь к документации Node.js и документации Edge за полным списком доступных API. Обе среды выполнения также могут поддерживать потоковую передачу в зависимости от вашей инфраструктуры развертывания.
© 2024 Vercel, Inc.
Licensed under the MIT License.
https://nextjs.org/docs/pages/building-your-application/rendering/edge-and-nodejs-runtimes