Skip to main content

SSR vs CSR

Ключова відмінність

КритерійSSR (Server-Side Rendering)CSR (Client-Side Rendering)
Де рендериться HTMLНа серверіУ браузері користувача
Що отримує користувач при першому запитіГотовий HTML-документ з уже вставленим контентомМайже порожній HTML-файл + JS-бандл, який потім сам будує DOM
Коли користувач бачить контентМайже одразу після відповіді сервераЛише після завантаження і виконання JavaScript
SEO-оптимізаціяВідмінна - пошуковики бачать повноцінний HTMLПогана без додаткових рішень (наприклад, prerendering)
НавантаженняБільше на сервер (він робить рендеринг)Більше на клієнт (браузер робить усю роботу)
Перше завантаження (TTFB)Довше (сервер генерує HTML)Швидша відповідь, але контент з'являється пізніше
Навігація між сторінкамиЧасто потребує нових запитів до сервераШвидка - усе працює як SPA без перезавантаження
Складність розробкиВища (гідратація, спільний код для клієнта й сервера)Простіша (усе лише на клієнті)

Як це виглядає на практиці

CSR:

  1. Користувач відкриває сайт.
  2. Сервер повертає мінімальний HTML з <div id="root"></div>.
  3. Браузер завантажує і виконує JS-бандл.
  4. JS-код сам створює DOM і відображає контент.
javascript
// index.html <body> <div id="root"></div> <script src="main.js"></script> </body>
javascript
// main.js ReactDOM.render(<App />, document.getElementById('root'));

SSR:

  1. Користувач відкриває сайт.
  2. Сервер запускає React-код, збирає готовий HTML.
  3. Сервер надсилає HTML користувачу.
  4. Браузер відображає сторінку одразу, потім "гідрує" її для інтерактивності.
javascript
// сервер const html = ReactDOMServer.renderToString(<App />); res.send(`<html><body><div id="root">${html}</div></body></html>`);

Підсумок:

  • SSR = контент видно одразу, краще для SEO і UX, але складніше й дорожче за серверними ресурсами.
  • CSR = швидша розробка й навігація, але повільніший перший рендер і гірший SEO без оптимізацій.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.