Рендеринг по запросу
Чтобы ваш Astro-проект отображался в браузере, его код должен быть преобразован в HTML.
По умолчанию Astro генерирует все страницы, маршруты и API-эндпойнты как статические файлы во время сборки. Однако вы можете обрабатывать некоторые или все маршруты на сервере в момент, когда они запрашиваются пользователем.
Страницы и маршруты с рендерингом по запросу генерируются при каждом посещении и могут быть персонализированы для каждого пользователя. Например, такая страница может показать авторизованному пользователю данные его аккаунта или отобразить актуальную информацию без пересборки всего сайта. Этот подход также известен как рендеринг на стороне сервера (SSR).
Серверные адаптеры
Заголовок раздела «Серверные адаптеры»Чтобы рендерить страницы по запросу, вам нужно подключить адаптер. Адаптер позволяет Astro сгенерировать скрипт, запускающий ваш проект в конкретной среде выполнения (runtime) — окружении, которое выполняет код на сервере (например, Netlify, Cloudflare, Node.js).
Адаптер может понадобиться даже для полностью статического сайта, например, для использования функций серверных островков.
Адаптеры
Astro поддерживает официальные адаптеры для Node.js, Netlify, Vercel и Cloudflare.
Добавление адаптера
Заголовок раздела «Добавление адаптера»Используйте команду astro add для автоматической установки:
shell npx astro add netlify shell pnpm astro add netlify shell yarn astro add netlify Включение рендеринга по запросу
Заголовок раздела «Включение рендеринга по запросу»По умолчанию весь сайт Astro генерируется заранее. Чтобы включить рендеринг по запросу для конкретной страницы, добавьте export const prerender = false в начало файла:
---export const prerender = false---<html> <!-- Этот контент будет рендериться на сервере при каждом запросе! --></html>Режим 'server'
Заголовок раздела «Режим 'server'»Для высокодинамичных приложений вы можете установить output: 'server' в конфиге. Тогда все страницы будут рендериться на сервере по умолчанию.
export default defineConfig({ output: 'server', adapter: netlify(),})В этом режиме вы можете выборочно пререндерить статические страницы (например, «О нас»), добавив export const prerender = true.
Возможности SSR
Заголовок раздела «Возможности SSR»Куки (Cookies)
Заголовок раздела «Куки (Cookies)»Страницы, рендерящиеся по запросу, могут работать с куками через объект Astro.cookies:
---if (Astro.cookies.has('counter')) { const cookie = Astro.cookies.get('counter'); const value = cookie.number() + 1; Astro.cookies.set('counter', String(value));}---Response и Request
Заголовок раздела «Response и Request»Вы имеете полный доступ к стандартным объектам Astro.request (заголовки, метод запроса) и Astro.response (установка статус-кодов и HTTP-заголовков).
---// Установка 404 статуса вручнуюif (!data) { Astro.response.status = 404;}---