Middle
Ինչպես է աշխատում սերվերի կողմի ռենդերինգի (SSR) տեխնոլոգիան։
sobes.tech AI
Պատասխան AI-ից
Սերվերային ռենդերինգը (SSR) տեխնիկա է, որի ժամանակ առաջին անգամ վեբ էջի ցուցադրումը տեղի է ունենում սերվերում, ոչ թե օգտվողի բրաուզերում:
Նորմալ հաճախորդային ռենդերինգի դեպքում, բրաուզերը ստանում է դատարկ HTML ֆայլ, որը կապակցված է JavaScript-ով: Բրաուզերը բեռնում է JavaScript-ը, վերլուծում, կատարում և միայն դրանից հետո դինամիկորեն կառուցում է DOM-ը և ցուցադրում բովանդակությունը:
SSR-ի դեպքում, սերվերը մշակում է հավելվածի կոմպոնենտները, ձևավորում է պատրաստ HTML կոդը և ուղարկում է այն բրաուզերին:
SSR-ի փուլերը՝
- Հարցում: Օգտագործողի բրաուզերը ուղարկում է HTTP հարցում սերվերին:
- Սերվերի վրա ռենդերինգ: Սերվերը գործարկում է հավելվածի JavaScript կոդը, ներառյալ UI կոմպոնենտների ռենդերինգի տրամաբանությունը, և ստանում է ամբողջությամբ ձևավորված HTML տող:
- Պատասխան: Սերվերը ուղարկում է այդ HTML ֆայլը բրաուզերին:
- Առաջին ցուցադրում: Բրաուզերը ստանում է HTML-ը և անմիջապես ցուցադրում է էջի բովանդակությունը, քանի որ բոլոր տարրերը արդեն առկա են նշումում:
- Հիդրատացիա (Hydration): HTML-ի բեռնումից հետո, բրաուզերը բեռնում և կատարում է հավելվածի JavaScript կոդը: Այս կոդը "ապրում" է ստատիկ նշումը, ավելացնելով ինտերակտիվություն, իրադարձությունների հենակետեր և վիճակի կապում:
SSR-ի առավելությունները՝
- Լավացված SEO: Փնտրող ռոբոտները ավելի լավ ինդեքսավորում են ամբողջությամբ ձևավորված HTML-ով էջերը:
- Ամենահետաքրքիր առաջին պատկերը (FCP - First Contentful Paint): Օգտագործողը ավելի արագ տեսնում է էջի բովանդակությունը:
- Լավացված հասանելիություն թույլ սարքերի և դանդաղ ինտերնետների համար: Փոքր կախվածություն է ունենում հաճախորդի սարքի կատարողականությունից հիմնական բովանդակությունը ցուցադրելու համար:
Նեղություններ՝
- Ավելացված բեռ սերվերի վրա: Սերվերը կատարում է ավելի շատ հաշվարկներ ռենդերինգի համար:
- Դժվարություն զարգացման մեջ: Պետք է հաշվի առնել կոդի իզոմորֆիզմը (կարողությունը գործարկելու ինչպես սերվերում, այնպես էլ հաճախորդում):
- Ավելացված չափի պատասխան: Սերվերի առաջին պատասխանն ամբողջ 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>