Middle
Ako funguje technológia server-side renderingu (SSR)?
sobes.tech AI
Odpoveď od AI
Server-side rendering (SSR) je technika, pri ktorej sa prvým zobrazením webovej stránky sa začína na serveri, nie v prehliadači používateľa.
Pri bežnom klientsko-renderovacom procese, prehliadač dostáva prázdny HTML súbor s odkazom na JavaScript. Prehliadač načíta JavaScript, analyzuje ho, vykoná ho a až potom dynamicky vytvára DOM a zobrazuje obsah.
Pri SSR server spracováva komponenty aplikácie, tvorí hotový HTML kód a odosiela ho prehliadaču.
Fázy SSR:
- Žiadosť: Používateľský prehliadač odosiela HTTP žiadosť na server.
- Renderovanie na serveri: Server spúšťa JavaScript kód aplikácie, vrátane logiky renderovania UI komponentov, a získava úplne vytvorený HTML reťazec.
- Odpoveď: Server odosiela tento HTML súbor prehliadaču.
- Prvé zobrazenie: Prehliadač prijíma HTML a okamžite zobrazuje obsah stránky, pretože všetky prvky sú už prítomné v značke.
- Hydratácia (Hydration): Po načítaní HTML prehliadač načíta a vykoná JavaScript kód aplikácie. Tento kód "oživuje" statickú štruktúru, pridáva interaktivitu, obslužné rutiny udalostí a viaže stav.
Výhody SSR:
- Vylepšené SEO: Vyhľadávacie roboty lepšie indexujú stránky s úplne vytvoreným HTML.
- Rýchlejšie prvé vykreslenie (FCP - First Contentful Paint): Používateľ vidí obsah stránky rýchlejšie.
- Vylepšený prístup pre slabé zariadenia a pomalý internet: Menšia závislosť od výkonu klientského zariadenia pri zobrazovaní hlavného obsahu.
Nevýhody SSR:
- Zvýšená záťaž na server: Server vykonáva viac výpočtov pre renderovanie.
- Zložitosť vývoja: Je potrebné brať do úvahy izomorfizmus kódu (možnosť vykonávania na serveri aj na klientovi).
- Väčšia veľkosť odpovede: Prvá odpoveď servera obsahuje úplný HTML.
// Príklad klientskeho kódu (pseudokód)
// Bežná klientska aplikácia dostáva prázdny div
const appDiv = document.getElementById('app');
// JavaScript sa načíta a vytvorí obsah
appDiv.innerHTML = `<h1>Hello, world!</h1>`;
// Príklad serverového kódu (pseudokód s použitím frameworku)
// Pri SSR, server generuje úplný HTML
import ReactDOMServer from 'react-dom/server';
import App from './App';
const html = ReactDOMServer.renderToString(<App />);
// Server odosiela niečo ako:
// <div id="app"><h1>Hello, world!</h1></div>