SSG — web sahifalarni foydalanuvchi requesti vaqtida emas, build jarayonida oldindan HTML fayllar ko‘rinishida yaratish usuli. To‘liq nomi Static Site Generation. Tayyor fayllar web server, object storage yoki CDN orqali tarqatiladi.
SSG documentation, blog, marketing, katalog va nisbatan kam o‘zgaradigan public content uchun keng ishlatiladi.
Build jarayoni
Build vaqtida generator:
- route ro‘yxatini oladi;
- content yoki API data’ni yuklaydi;
- template yoki componentni render qiladi;
- HTML yaratadi;
- CSS, JavaScript va assetlarni tayyorlaydi;
- output directoryga yozadi;
- CDN yoki hostingga deploy qiladi.
Runtime server har request uchun template render qilmasligi mumkin.
Static fayl
Har route uchun tayyor fayl bo‘lishi mumkin:
/index.html
/about/index.html
/posts/hello/index.html
Web server faqat mos faylni qaytaradi.
Bu architecture sodda va yuqori trafficga chidamli.
CDN
Static HTML edge locationlarda cache qilinadi.
Foydalanuvchi geografik yaqin serverdan response oladi.
Origin load kamayadi.
Cache key va invalidation deploymentga mos boshqariladi.
Performance
SSG response uchun database va runtime render kutmaydi.
Afzalliklar:
Client JavaScript va image noto‘g‘ri optimizatsiya qilinsa page baribir sekin bo‘lishi mumkin.
SEO
Content HTML ichida mavjud.
Har route uchun:
- title;
- description;
- canonical;
- Open Graph;
- structured data;
- heading
build vaqtida yaratiladi.
SSG public contentni crawler uchun tushunarli qiladi.
Data source
Content:
dan olinishi mumkin.
Build data source unavailable bo‘lsa deployment muvaffaqiyatsiz tugashi mumkin.
Dynamic route
Product yoki maqola IDlari build vaqtida ma’lum bo‘lsa har biri uchun static page yaratiladi.
Millionlab route build vaqtini va output hajmini oshiradi.
Shunda on-demand generation, ISR yoki SSR ishlatilishi mumkin.
Build time
Content soni oshgani sari build uzoq davom etadi.
Har kichik o‘zgarishda barcha page’ni qayta yaratish samarasiz bo‘lishi mumkin.
Incremental build faqat o‘zgargan page va dependencylarni qayta render qiladi.
Freshness
Static page deploy qilinguncha o‘zgarmaydi.
Data tez-tez yangilansa content eskirishi mumkin.
Yechimlar:
Freshness business talabiga bog‘liq.
Headless CMS
Editor contentni headless CMSda o‘zgartiradi.
CMS webhook build pipeline’ni ishga tushiradi.
Yangi static output deploy qilinadi.
Build va publish orasidagi kechikish content workflow’ning bir qismi.
Personalization
Har user uchun alohida HTMLni build qilish odatda mumkin emas.
Personalized qism:
- client-side fetch;
- edge middleware;
- cookie asosidagi kichik fragment;
- authenticated application route
orqali qo‘shilishi mumkin.
Public static va private dynamic sahifalar ajratiladi.
Authentication
SSG output public file hisoblanadi.
Build vaqtida secret data HTMLga kiritilsa uni barcha user olishi mumkin.
Private dashboard static HTML sifatida public CDNga chiqarilmaydi.
Authentication clientda ko‘rinsa ham server API authorizationni tekshiradi.
JavaScript hydration
SSG faqat statik HTML bo‘lishi mumkin.
Yoki JavaScript yuklanib componentlarni interaktiv qiladi.
Bunday model:
buildda HTML
→ browserda hydration
ko‘rinishida ishlaydi.
Keraksiz hydration static content uchun ortiqcha JavaScript yaratishi mumkin.
Islands architecture
Sahifaning katta qismi statik HTML, faqat kichik interaktiv qismlar JavaScript “island” sifatida ishlaydi.
Masalan:
- search;
- cart;
- comment;
- theme switch.
Bu client bundle’ni kamaytirishga yordam beradi.
Preview
Editor publishdan oldin draft contentni ko‘rishi kerak.
Preview route runtime rendering yoki maxsus authenticated build orqali ishlashi mumkin.
Public production build draftlarni o‘z ichiga olmaydi.
Deployment
Static deployment immutable output sifatida versionlanadi.
Yangi versiya tayyor bo‘lgach atomic switch qilinadi.
Rollback oldingi outputga qaytish bilan tez bajarilishi mumkin.
Partial file upload vaqtida eski va yangi asset aralashmasligi kerak.
SSG va SSR
SSG build vaqtida render qiladi.
SSR har requestda yoki cache missda render qiladi.
SSG server loadini kamaytiradi, SSR esa yangi va personalized data uchun moslashuvchanroq.
SSG va ISR
ISR static page’ni deploymentdan keyin ma’lum vaqtda yoki trigger asosida qayta yaratadi.
Bu SSG performance’i bilan yangi data o‘rtasida muvozanat yaratadi.
Sitemap va feed
Build vaqtida route ro‘yxati ma’lum bo‘lgani sabab sitemap, RSS feed va boshqa index fayllari avtomatik yaratilishi mumkin. Delete yoki slug o‘zgarishi ularning yangilanishini talab qiladi.
Build reproducibility
Bir xil commit va content versiyasidan bir xil output olinishi deploymentni tekshirishga yordam beradi. External API real vaqt qiymatini qaytarsa build natijasi o‘zgarishi mumkin. Content snapshot, lockfile va aniq environment ishlatiladi.
Secretlar
Build server private CMS token bilan data olishi mumkin, lekin token generated JavaScript yoki source map ichiga tushmasligi kerak. Public environment variable va server-only secret aniq ajratiladi.
Redirect va 404
O‘chirilgan yoki ko‘chirilgan static route uchun redirect ham build outputning bir qismi bo‘ladi. Noma’lum URLga foydali 404 sahifasi qaytariladi. CDN status code’ni to‘g‘ri saqlashi kerak.
Bog‘liq tushunchalar
Static Site Generation, Static hosting, CDN, Build process, Headless CMS, Incremental build, ISR, SSR, Hydration, Islands architecture