ДокументацияРежимы
Рендеринг
Рендеринг отвечает на один вопрос: кто создаёт HTML и когда. У Nexy есть четыре ответа и один по умолчанию.
Не уверен? Сохраняйте SSR. Изменяйте страницу только тогда, когда вы можете назвать причину: контент, который редко меняется (ISR), один виджет, которому нужен браузер (остров), или навигация, подобная приложению (CSR).
Как это работает
SSRrequestserver rendersHTMLbrowser
ISRrequestcached HTML?browser, regenerated in the background
CSRrequestdocument rendered by the serverbrowser takes over navigation
Islandsrequestserver renders the pageone widget hydrates on demand
Четыре режима
| ССР | ISR | КСО | Острова | |
|---|---|---|---|---|
| Данные читаются | по каждому запросу | при каждой регенерации | в браузере | по каждому запросу |
| HTML взят из | сервер | сервер, затем кэш | сервер для первого документа, браузер потом | сервер |
| JavaScript | только для островов | только для островов | пакет фреймворка | только остров |
| Увлажнение | нет | нет | весь документ | остров |
| Кэш | нет | за URL, в памяти | нет | нет |
| Решено | по умолчанию | revalidate = N на странице |
useCSR = True в проекте |
directive на компоненте |
| Зерно | страница | страница | проект | компонент |
Жизненный цикл рендеринга
Два факта объясняют большинство сюрпризов.
- Проект находится в одном режиме.
useCSRвыбирает между режимом сервера (SSR, ISR, острова, маршруты.nexy,.md,.mdx) и режимом клиента (маршруты инфраструктуры и клиентский маршрутизатор). Их нельзя смешивать: см. режим сервера и режим клиента. - В режиме сервера режим постраничный. Одна страница может быть кэширована с помощью
revalidate, другая может содержать остров, третья не может ни того, ни другого.
Клиентский режим по-прежнему отправляет реальный документ: Nexy отображает его в Node для первого ответа, затем браузер берет на себя навигацию. Страница CSR — это не пустая страница, ожидающая пакета.
Когда использовать
- Контент, маркетинг, документация: SSR плюс ISR, когда контент меняется редко.
- В основном статичная страница с одним интерактивным виджетом: SSR с островом.
- Панели мониторинга, редакторы, навигация в стиле приложений: CSR.
- Страница читается постоянно и редко меняется: ISR.
Конфигурация
| Режим | Где |
|---|---|
| ССР | нигде: это значение по умолчанию |
| ISR | revalidate = 60 в заглавной части страницы .nexy |
| КСО | useCSR = True в nexyconfig.py, с установленным useFF |
| Острова | directive="client:visible" в теге компонента |
Пример
revalidate = 60<h1>Rendered at most once per minute</h1>Та же страница без титульной строки — SSR.
from "@/components/Chart.tsx" import Chart<h1>Rendered on every request</h1><Chart directive="client:visible" />Представление — SSR, а диаграмма — это остров, который увлажняется при прокрутке в поле зрения.
Ограничения
- Режим SSG отсутствует. Nexy предварительно отображает HTML во время сборки (HTML компонента, клиентские документы), но всегда считывает его обратно через сервер: нет команды экспорта, нет отдельной папки для статического размещения. Для замороженного контента используйте ISR с длинным окном.
- ISR не является CDN. Кэш находится в процессе рендеринга страницы; несколько рабочих хранят несколько тайников. См. ISR.
- CSR — это проектное решение. Вы не можете создать CSR одной страницы и сохранить SSR остальных.
- Острова увлажняют остров, а не страницу. Страница, все острова которой зависят друг от друга, является замаскированной страницей CSR.
Следующие шаги
- SSR: значение по умолчанию
- ISR: кэшировать страницу для каждого URL-адреса.
- CSR: ручная навигация в браузере.
- Острова: гидратный виджет
- Производительность