Вышел Astro 5.3 — более быстрый рендеринг страниц, упрощённая настройка экспериментальных сессий и многое другое!
💘 Сезон любви — и вы влюбитесь в эти улучшения Astro:
- Более быстрый рендеринг страниц
- Автоматическая настройка хранилища сессий
- Больше контроля над бандлингом Netlify
- Улучшенная обработка
HEAD-запросов
Чтобы обновить существующий проект, используйте CLI @astrojs/upgrade. Или обновите вручную:
# Рекомендуется:npx @astrojs/upgrade
# Вручную:npm install astro@latestpnpm upgrade astro --latestyarn upgrade astro --latestFaster page rendering
Astro упрощает async-функции внутри компонентов, но раньше каждый компонент и страница рендерились асинхронно, даже когда не нужно. На странице с множеством компонентов накладные расходы промисов заметно накапливаются!
Теперь благодаря вкладу MatthewLymer из Fora Astro рендерит компоненты асинхронно только если… (под)ожидаете… они действительно содержат вызов async-функции.
В бенчмарках это дало значительное ускорение синхронных компонентов. Польза и on-demand, и статическим сборкам; наибольший эффект — на время ответа SSR. Помогает даже страницам с async: большинство компонентов всё равно синхронны.
Точный выигрыш зависит от сайта. Сложные страницы с множеством компонентов — наибольший прирост; страницы с медленными внешними API при запросе могут не измениться. В тестах SSR обычно в 1.5–2 раза быстрее, если страница не опрашивает внешние API. Примеры:
- Для сайта документации Astro на 5300 страниц время статической сборки сократилось на 10–15%.
- В бенчмарке Platformatic SSR со страницей из 3000+ компонентов запросы в 4 раза быстрее.
Ничего делать не нужно — просто наслаждайтесь более быстрым рендерингом.
Automatic session storage setup
Astro 5.1 представил экспериментальный API хранения сессий для управления сессиями пользователей на сервере. Поддерживаются десятки backend-драйверов на unstorage.
Раньше нужно было настраивать драйвер в astro.config.mjs; теперь Astro автоматически настроит хранилище сессий с поддерживаемым адаптером.
Начинаем с @astrojs/node (файловая система) и @astrojs/netlify (Netlify Blobs). Надеемся добавить дефолтные драйверы для других адаптеров, где платформа включает storage API. Всегда можно настроить свой драйвер.
Если ещё не пробовали API сессий, включите experimental.session: true в astro.config.mjs:
{ adapter: node({ mode: "standalone", }), experimental: { session: true, }, }Если уже используете сессии, обновите конфиг под новый синтаксис — breaking change.
experimental.session теперь булев флаг true — дефолтный драйвер с поддерживаемым адаптером без дополнительной настройки!
Конфигурация сессий перенесена на top-level ключ session — для нестандартного драйвера и опций вроде префикса base или ttl истечения.
{ adapter: node({ mode: "standalone", }), experimental: { session: { driver: "upstash", }, session: true, }, session: { driver: "upstash", }, }Подробнее — в документации экспериментальных сессий.
More control over Netlify bundling
При сборке для serverless-платформ вроде Netlify или Vercel Astro бандлит все файлы и зависимости. Адаптеры Netlify и Vercel используют одну библиотеку, которая обычно хорошо определяет нужное.
Не всегда: иногда пропускает нужный файл, особенно статический, загружаемый через filesystem. Иногда включает лишнее — замедляет сборку и увеличивает бандл.
У адаптера Vercel уже были excludeFiles и includeFiles; в этом релизе они доступны и в адаптере Netlify. Оба принимают массив путей или globs.
{ adapter: netlify({ includeFiles: ["src/locales/**/*.po"], excludeFiles: ["node_modules/big-package/chonky-file.bin"], }), }Спасибо Dani Fernández за этот вклад.
Improved handling of HEAD requests
API endpoints теперь автоматически обрабатывают HEAD, если определён обработчик GET. Astro вызовет GET и вернёт ответ с пустым телом. Для другого поведения можно определить отдельный обработчик. Подробнее — в документации API endpoints.
Спасибо Vitalii Rybachenko из Netlify за этот вклад.
Bug fixes
Как всегда, с релиза 5.2 мы усердно исправляли проблемы. Все детали — в changelog.
Thanks
Спасибо всем контрибьюторам, включая Emanuele Stoppa, Sarah Rainsberger, HiDeoo, Yan Thomas, Dani Fernández, unprintable123, Sean Boult, Armand Philippot, Vitalii Rybachenko, Cornelius Roemer, и многих других. Особая благодарность MatthewLymer за отличную работу над ускорением рендеринга.
Ждём, что вы построите с Astro 5.3! Вопросы и комментарии — в Astro Discord.
