JavaRush /Курсы /Модуль 3: React /Основные преимущества SSR — SEO, скорость загрузки, произ...

Основные преимущества SSR — SEO, скорость загрузки, производительность

Модуль 3: React
13 уровень , 1 лекция
Открыта

SEO и видимость в поисковых системах

Как SSR улучшает SEO?

Поисковые системы, такие как Google, обожают "готовые блюда". Когда пользователь (или поисковый робот) заходит на ваш сайт, они хотят видеть уже отрендеренную страницу, а не сплошные <div>Loading...</div>. SSR позволяет серверу подготовить контент страницы заранее, чтобы он сразу был доступен.

Пример:

// Пример простой страницы с SSR на Next.js
export async function getServerSideProps() {
  return {
    props: {
      title: "Мой замечательный сайт",
      description: "Это описание страницы, которое увидят поисковые системы",
    },
  };
}

function HomePage({ title, description }: { title: string; description: string }) {
  return (
    <div>
      <h1>{title}</h1>
      <p>{description}</p>
    </div>
  );
}

export default HomePage;

И вот поисковой робот сразу видит контент <h1>Мой замечательный сайт</h1> вместо "Не дождусь, пока эта страничка загрузится".

Поисковые роботы любят текст, а не JavaScript

CSR (Client-Side Rendering) может стать проблемой, потому что ему требуется сначала загрузить Javascript, обработать его и только потом отобразить содержимое. Многие поисковые роботы не так уж хороши в выполнении JavaScript, что может привести к неполному индексированию.

SSR решает эту проблему: текст уже отрендерен сервером и доступен сразу, что значительно улучшает видимость вашего сайта.

SEO — не только про текст

SSR также помогает оптимизировать мета-теги <meta>, заголовки <title>, описания и Open Graph данные (для соцсетей). Все это увеличивает шансы, что ваш сайт станет звездой... или хотя бы займет первую строку в поисковой выдаче.

Скорость загрузки и пользовательский опыт

Опыт пользователя = скорость загрузки

Вы знали, что пользователи начинают нервно жать на "назад", если страница загружается больше 3 секунд? В мире, где люди привыкли к молниеносным приложениям, медленные сайты не имеют шансов.

SSR снижает время первой загрузки страницы (First Contentful Paint, FCP), потому что браузер получает уже готовую HTML-страницу. Ему не нужно ждать выполнения JavaScript, чтобы увидеть что-то на экране.

Реальный пример: без SSR vs. с SSR

Без SSR:

  1. Браузер загружает HTML: <html><body><div id="app"></div><script src="app.js"></script></body></html>.
  2. Затем загружается и выполняется app.js.
  3. Только потом появляется контент.

С SSR:

  1. Браузер загружает HTML: <html><body><div id="app"><h1>Привет, мир!</h1></div></body></html>.
  2. Контент уже доступен, даже если JS еще не загрузился.

Наверняка видите разницу: пользователи видят содержимое мгновенно и не машут мышкой в ожидании, пока что-то появится.

Пример быстрой загрузки на Next.js

export async function getServerSideProps() {
  // Имитация получения данных с API
  const data = await fetch("https://jsonplaceholder.typicode.com/posts/1").then((res) => res.json());
  return {
    props: {
      post: data,
    },
  };
}

function PostPage({ post }: { post: { title: string; body: string } }) {
  return (
    <article>
      <h1>{post.title}</h1>
      <p>{post.body}</p>
    </article>
  );
}

export default PostPage;

Сервер подготовит HTML с данными статьи, и пользователи сразу увидят ее на экране.

Производительность серверного рендеринга

Как SSR улучшает производительность?

SSR не требует, чтобы клиентский браузер работал "на максимум". Вместо этого тяжелую работу берет на себя сервер. Это особенно важно для:

  • Устройств с низкой производительностью (старые смартфоны, планшеты).
  • Медленных интернет-соединений.

Вместо того, чтобы заставлять браузер пользователя тратить ресурсы на рендеринг, SSR предоставляет готовые страницы.

Настройка сервера для максимальной производительности

  1. Кэширование: используйте кэширование на уровне сервера, чтобы ускорить рендеринг страниц, которые часто запрашиваются.
  2. Асинхронные запросы: оптимизируйте запросы к API, чтобы они выполнялись параллельно.
  3. Эффективное использование памяти: контролируйте объем данных, которые загружаются и обрабатываются сервером.

Пример кэширования данных

let cache: { [key: string]: any } = {};

export async function getServerSideProps() {
  if (!cache["data"]) {
    console.log("Fetching fresh data...");
    const data = await fetch("https://jsonplaceholder.typicode.com/posts").then((res) => res.json());
    cache["data"] = data; // Сохраняем в кэш
  }

  return {
    props: {
      posts: cache["data"],
    },
  };
}

function PostsPage({ posts }: { posts: Array<{ id: number; title: string }> }) {
  return (
    <ul>
      {posts.map((post) => (
        <li key={post.id}>{post.title}</li>
      ))}
    </ul>
  );
}

export default PostsPage;

Здесь мы кэшируем данные на уровне сервера, чтобы не запрашивать их каждый раз при загрузке страницы.

Ограничения SSR

SSR требует больше серверных ресурсов. Больше пользователей = больше нагрузки на сервер. Этот подход может усложнить масштабирование приложения, поэтому важно использовать грамотное кэширование и балансировку нагрузки.

Практическое применение

  1. Контентные сайты: блоги, новостные порталы, маркетплейсы. Успешное индексирование поисковыми системами и высокая скорость загрузки важны для удержания аудитории.
  2. Магазины и e-commerce: пользователи должны мгновенно видеть товары, иначе они уйдут к конкурентам.
  3. Приложения со сложной навигацией: SSR упрощает работу на медленных устройствах и обеспечивает стабильную производительность.

Итак, мы с вами разобрали три ключевых преимущества SSR. Вы теперь готовы убедить своего будущего менеджера в необходимости SSR.

2
Задача
Модуль 3: React, 13 уровень, 1 лекция
Недоступна
Настройка базовой страницы с SSR
Настройка базовой страницы с SSR
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ