Middle
Технологияи серверӣ (SSR) чӣ гуна кор мекунад?
sobes.tech AI
Ҷавоб аз AI
Техникии, кидаги сервер томонидан рендеринг (SSR), биринчи веб-саҳифа кўрсатилиши серверда бўлиб, фойдаланувчининг браузерида эмас.
Оддий мижоз томонидан рендерингда, браузер бўш HTML-файлни JavaScript билан бирга олади. Браузер JavaScript-ни юклайди, парс қилади, ишга туширади ва фақат шундан кейин DOM-ни динамик равишда қуриб, мазмунни кўрсата бошлайди.
SSRда, сервер дастур компонентларини ишлайди, тайёр HTML кодни тайёрлайди ва уни браузерга юборади.
SSR босқичлари:
- Сўров: Фойдаланувчи браузери HTTP сўровини серверга юборди.
- Серверда рендеринг: Сервер UI компонентларининг рендерлаш логикасини ҳам ўз ичига олган JavaScript кодини ишга туширади ва тўлиқ тайёр HTML-стрингни олади.
- Жавоб: Сервер бу HTML-файлни браузерга юборди.
- Биринчи кўрсатиш: Браузер HTML-ни олади ва мазмунни тезда кўрсатади, чунки барча элементлар аллақачон белгиланган.
- Гидратация (Hydration): HTML юклангандан кейин, браузер JavaScript кодини юклайди ва ишга туширади. Бу код статик мазмунда "жонлантириш", интерактивлик, ҳодиса ишловчиларини қўшиш ва ҳолатни боғлаш учун хизмат қилади.
SSRнинг афзалликлари:
- SEOни яхшилаш: Тўлиқ HTML билан тўлиқ индексланган саҳифалар қидирув роботлари томонидан яхши индексланади.
- Биринчи мазмунли чизмани тезлаштириш (FCP - First Contentful Paint): Фойдаланувчи мазмунни тезроқ кўради.
- Заиф қурилмалар ва секин интернет учун яхшироқ кириш имконияти: Асосий мазмунни кўрсатишда клиент қурилмасининг ишлаш қобилиятига бўлган боғлиқлик камаяди.
SSRнинг камчиликлари:
- Серверда юкламани ошириш: Сервер рендерлаш учун кўпроқ ҳисоблашлар олиб боради.
- Ривожланишнинг мураккаблиги: Коднинг изоморфизмини ҳисобга олиш керак (серверда ҳам, мижозда ҳам ишлаш имконияти).
- Жавобнинг катталиги: Биринчи жавоб тўлиқ HTML-дан иборат.
// Мижоз коди мисоли (псеудокод)
// Оддий мижоз дастури бўш div олади
const appDiv = document.getElementById('app');
// JavaScript юкланади ва мазмун яратади
appDiv.innerHTML = `<h1>Hello, world!</h1>`;
// Сервер коди мисоли (псеудокод, фреймворкдан фойдаланган ҳолда)
// SSRда, сервер тўлиқ HTMLни яратади
import ReactDOMServer from 'react-dom/server';
import App from './App';
const html = ReactDOMServer.renderToString(<App />);
// Сервер шундай жўнатади:
// <div id="app"><h1>Hello, world!</h1></div>