Sayt ishlab chiqishni boshlashdan oldin beriladigan eng muhim texnik savol — HTML qayerda yig'iladi? Serverda yoki foydalanuvchi brauzerida? Bu bitta qaror keyinchalik indeksatsiya tezligini, sahifa yuklash ko'rsatkichlarini va hatto Telegramda havola qanday ko'rinishini belgilaydi.
Amaliyotda men ko'p marta ko'rganman: chiroyli, zamonaviy React saytga million so'm sarflangan, kontent ajoyib yozilgan, lekin Google ikki oy davomida sahifalarni indeksga kiritmaydi. Sabab — renderlash usuli noto'g'ri tanlangan.
Asosiy tushunchalar
SSR — Server-Side Rendering
Server har bir so'rovga tayyor HTML qaytaradi. Qidiruv roboti sahifani so'raganda darhol to'liq matn, sarlavhalar, meta teglar va strukturali ma'lumotlarni oladi.
Bu klassik yondashuv: PHP (Laravel, Yii2), Django, Rails. Shuningdek zamonaviy JS freymvorklarining server rejimi — Next.js, Nuxt, SvelteKit.
SSG — Static Site Generation
HTML oldindan, loyiha yig'ilish paytida tayyorlanadi. Foydalanuvchi shunchaki tayyor faylni oladi — server hech narsa hisoblamaydi.
Eng tez variant. Kamchiligi: kontent o'zgarsa, saytni qayta yig'ish kerak. Blog, dokumentatsiya, landing sahifalar uchun ideal.
CSR / SPA — Client-Side Rendering
Server bo'sh <div id="app"></div> va JavaScript to'plamini yuboradi. Butun kontentni brauzer chizadi.
Bu React, Vue yoki Angular da build qilingan va server renderisiz ishlaydigan saytlar. Aynan shu yerda SEO muammolari boshlanadi.
Gibrid yechimlar
ISR (Next.js), Astro Islands, React Server Components — bular aslida SSR yoki SSG bo'lib, faqat kerakli joylarda interaktivlik qo'shadi. Bugungi kunda eng mantiqiy yo'nalish shu.
Google JavaScript ni qanday qayta ishlaydi
Googlebot JavaScript ni bajaradi — bu allaqachon shubhasiz fakt. Lekin jarayon ikki bosqichda kechadi:
- Robot HTML ni yuklaydi va undagi havolalarni ko'radi
- Sahifa render navbatiga tushadi, u yerda Chromium JS ni bajaradi
Google vakillari medianada bu kechikish bir necha soniya ekanini aytadi. Muammo — median emas, taqsimotning "dumi". Katta yoki kam ahamiyatli saytlarda ayrim sahifalar render navbatida kunlab turishi mumkin.
Yangiliklar sayti uchun bu halokat: xabar indeksga tushguncha eskiradi. Blog uchun toqat qilsa bo'ladi.
Asosiy muammo — Google emas
Bugungi kunda SPA ga qarshi asosiy dalil Googlebot bilan bog'liq emas. Gap boshqa robotlarda:
| Robot | JS bajaradimi | Nima uchun muhim |
|---|---|---|
| Googlebot | Ha, kechikish bilan | — |
| YandexBot | Cheklangan | O'zbekistonda Yandex ulushi sezilarli |
| Bingbot | Qisman | Copilot uchun manba |
| GPTBot, ClaudeBot, PerplexityBot | Yo'q | AI qidiruv ulushi o'smoqda |
| Telegram, Facebook preview botlari | Yo'q | Messenjerlardagi havola ko'rinishi |
Oxirgi qator — O'zbekiston bozori uchun alohida og'riq. Telegramga SPA sayt havolasini tashlaysiz — preview bo'sh chiqadi, chunki Open Graph teglari JavaScript orqali qo'yilgan. Trafikni qidiruv tizimigacha yetmasdan yo'qotasiz.
AI qidiruv ham tez o'smoqda. ChatGPT, Perplexity va Claude javoblarida sayt manba sifatida ko'rsatilishi yangi trafik kanaliga aylanmoqda. Bu robotlar JS bajarmaydi — server bergan HTML nimani o'z ichiga olsa, o'shani ko'radi.
Core Web Vitals ga ta'siri
SPA da og'ir JS to'plami uchta asosiy ko'rsatkichni ham buzadi:
LCP — asosiy kontent JS yuklanib, bajarilib, API dan ma'lumot kelgandan keyin paydo bo'ladi. SSR da esa birinchi javobda.
INP — gidratatsiya jarayoni asosiy oqimni bloklaydi. Sahifa ko'rinadi, lekin bosishga javob bermaydi.
CLS — skeleton yuklagichlar haqiqiy kontentga almashganda maket sakraydi.
Sekin 3G va o'rtacha telefonda 500 KB bandl — bu bir necha soniyalik kechikish. O'zbekistondagi mobil trafik ulushini hisobga olsak, bu real konversiya yo'qotishi.
SPA saytlarda uchraydigan tipik xatolar
Auditlarda deyarli har safar bir xil narsalarni topaman:
- Navigatsiya
onclickorqali — robot<a href>ko'rmaydi, demak ichki havolalar mavjud emas. Sayt strukturasi krawler uchun ko'rinmas bo'ladi. - Hash-routing (
#/maqola/5) — bunday URL lar indekslanmaydi. Google fragment qismini e'tiborga olmaydi. - Mavjud bo'lmagan sahifa 200 qaytaradi — soft 404 muammosi. Server har doim
index.htmlberadi, hatto URL xato bo'lsa ham. - Canonical va hreflang JS orqali qo'yiladi — Google uchun ishlashi mumkin, boshqa robotlar uchun umuman yo'q.
- "Ko'proq ko'rsatish" tugmasi ortidagi kontent — bosilmagan narsa indeksga tushmaydi.
- Meta teglar dinamik — har bir sahifa uchun bir xil
<title>serverdan keladi, keyin JS uni o'zgartiradi. Preview botlar birinchi variantni oladi.
Qaysi holatda nimani tanlash kerak
Kontent loyihalari — blog, yangiliklar, katalog, xizmatlar sayti. Faqat SSR yoki SSG. Muqobil variant yo'q.
Interaktiv vositalar — kalkulyatorlar, konvertorlar, tahrirlagichlar. Bu yerda CSR o'rinli, lekin landing sahifalar server tomonida renderlanishi kerak. Masalan, fayl konvertori brauzerda ishlashi mumkin, lekin har bir format uchun tavsif sahifasi SSR bo'lishi shart.
Shaxsiy kabinet, admin panel — indeksatsiya kerak emas, SPA ideal.
Tayyor React sayt bo'lsa uch yo'l bor:
- Next.js yoki Nuxt ga o'tkazish — to'g'ri, lekin qimmat
- Prerender xizmatini ulash (Prerender.io va shunga o'xshash) — tez, lekin bu tayanch
- Faqat SEO uchun muhim sahifalarni server renderiga chiqarish — oraliq yechim
Tekshiruv ro'yxati
Sayt renderlash tomondan to'g'ri ishlayotganini tekshirish uchun:
Ctrl+Ubosing va sahifa manbasini ko'ring. Matn bormi? Yo'q bo'lsa — CSR.- Brauzerda JavaScript ni o'chiring va sahifani yangilang. Nima qoldi?
- Google Search Console da "URL tekshirish" → "Tekshirilgan sahifa" → HTML ni ko'ring.
- Havolani Telegramga tashlang — preview chiqdimi?
curl -A "GPTBot" https://sayt.uz/sahifabuyrug'i bilan HTML da kontent borligini tekshiring.- PageSpeed Insights da LCP va INP ni ko'ring.
- Sayt ichidagi havolalar haqiqiy
<a href>ekanini kod orqali tasdiqlang.
Beshinchi punkt eng ko'p narsani ochib beradi: agar curl bo'sh HTML qaytarsa, siz AI qidiruv va messenjerlar uchun mavjud emassiz.