Я уже два года использую SvelteKit для создания высокопроизводительных веб-приложений. Но когда речь заходит о SEO, даже самый быстрый сайт может провалиться без правильной настройки. В этой статье я поделюсь своим опытом оптимизации SvelteKit-проектов: от работы с динамическими маршрутами до тонкостей структурированных данных. Готовы превратить ваш SvelteKit в SEO-машину? Поехали!
Динамические маршруты: как я заставил их работать на SEO
Динамические страницы — основа для блогов, каталогов и личных кабинетов. Но если их неправильно настроить, поисковые роботы просто не увидят ваш контент.
Мой подход к созданию динамических страниц:
- В папке
src/routesсоздаю файл/[slug].svelte— это шаблон для динамического маршрута. - В
src/routes/[slug]/+page.server.jsдобавляю логику загрузки данных:
export async function load({ params }) { const post = await getPostFromCMS(params.slug); // Запрос к CMS if (!post) return { status: 404 }; return { post }; }
- В компоненте страницы получаю данные:
<script>
export let data;
const { post } = data;
</script>
<h1>{post.title}</h1>
Ошибка, которую я допустил вначале: не настроил генерацию sitemap.xml. Исправил с помощью пакета @sveltejs/sitemap, добавив динамические пути:
import { defineDynamicRoutes } from '@sveltejs/sitemap'; export const sitemap = defineDynamicRoutes(async () => { const posts = await getAllPostsSlugs(); return posts.map(slug => `/blog/${slug}`); });
Пререндеринг: мой секрет мгновенной загрузки страниц
SvelteKit позволяет рендерить страницы на этапе сборки — идеально для SEO. Но когда использовать prerender, а когда ssr?
Мои правила:
- Пререндеринг: для статичного контента (блог, лендинги)
- SSR: для персонализированных данных (личный кабинет)
Как я настраиваю пререндеринг:
В +page.server.js добавляю:
export const prerender = true;
Важный нюанс: для динамических маршрутов нужно явно указать генерируемые пути в prerender.entries (файл svelte.config.js):
kit: { prerender: { entries: ['/blog/*'] } }
Результаты тестов:
| Страница | Время загрузки (без кэша) |
|---|---|
| Пререндеренная | 230 мс |
| SSR | 890 мс |
| Клиентский рендер | 1500 мс |
Замеры проводились через WebPageTest с 3G соединением.
Метаданные: как я обогнал конкурентов в поисковой выдаче
С svelte-meta-tags настройка метаданных становится элементарной. Вот мой рецепт:
- Устанавливаю пакет:
npm install svelte-meta-tags
- В корневом
+layout.svelteзадаю общие метатеги:
<script>
import { Meta } from 'svelte-meta-tags';
</script>
<Meta
title="Мой крутой блог"
description="Лучшие статьи о SvelteKit и SEO"
canonical="https://myblog.com"
og={{ image: '/og-image.png' }}
/>
- Для динамических страниц переопределяю теги:
<script>
import { Meta } from 'svelte-meta-tags';
export let data;
</script>
<Meta
title={data.post.title}
description={data.post.excerpt}
og={{
image: data.post.cover,
type: 'article',
published_time: data.post.date
}}
VK={{ card: 'summary_large_image' }}
/>
Добавляйте canonical-ссылки для дублированного контента, это помогло мне исправить 90% проблем с индексацией.
Структурированные данные: мой козырь в борьбе за rich-результаты
Используя JSON-LD, я увеличил CTR из поиска на 18%. Вот как это работает:
- Создаю компонент
StructuredData.svelte:
<script>
export let data;
</script>
<svelte:head>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "{data.title}",
"datePublished": "{data.date}",
"image": "{data.cover}",
"author": {
"@type": "Person",
"name": "Алексей Петров"
}
}
</script>
</svelte:head>
- Использую в странице статьи:
<StructuredData data={post} />
Проверяю через Google Rich Results Test — ошибок быть не должно!
Оптимизация: финальные штрихи
- Адаптеры: Использую
@sveltejs/adapter-staticдля статических сайтов - Кэширование: Настраиваю
Cache-Controlв хук-файлах - Изображения:
<Image>из@sveltejs/image+ lazy loading
Итоги
После внедрения этих техник мой сайт вылетел в топ-3 по запросам «SvelteKit SEO». Помните:
✅ Динамические маршруты требуют ручной настройки sitemap
✅ Пререндеринг, ваш лучший друг для статичного контента
✅ Метаданные должны быть динамическими и релевантными
✅ Структурированные данные — ключ к rich-результатам
SEO в SvelteKit это продуманная архитектура. Начните с базовых настроек, тестируйте результаты и постепенно добавляйте сложные фичи. У вас всё получится!
Поддержка автора осуществляется с помощью специальной формы ниже, предоставленной сервисом «ЮMoney». Все платёжные операции выполняются на защищённой странице сервиса, что обеспечивает их корректность и полную безопасность.


