[{"data":1,"prerenderedAt":9025},["ShallowReactive",2],{"blog-article:uz:javaskript-seo":3,"blog-translations:javascript-seo":953,"related-blog-articles:uz:javaskript-seo":960},{"id":4,"title":5,"author":6,"body":7,"category":937,"description":938,"draft":939,"extension":940,"featured":941,"image":942,"imageAlt":943,"locale":944,"meta":945,"navigation":941,"path":946,"publishedAt":947,"seo":948,"slug":949,"stem":950,"translationKey":951,"updatedAt":947,"__hash__":952},"blog\u002Fblog\u002Fuz\u002Fjavaskript-seo.md","JavaScript SEO: crawling va rendering bo‘yicha amaliy qo‘llanma","SeoNest Team",{"type":8,"value":9,"toc":918},"minimark",[10,15,19,22,26,34,43,47,132,141,146,150,153,217,220,223,229,234,238,241,302,305,312,319,323,326,329,356,359,391,402,409,416,423,428,432,435,438,443,453,459,465,469,476,479,486,498,508,513,516,532,535,539,542,549,556,559,563,566,573,576,580,591,669,672,678,682,685,692,706,713,718,722,731,734,739,743,750,753,756,760,765,768,773,777,780,787,791,794,799,803,806,811,815,818,823,827,830,833,837,914],[11,12,14],"h2",{"id":13},"javascript-seo-amaliy-muhandislik-qollanmasi","JavaScript SEO: amaliy muhandislik qo‘llanmasi",[16,17,18],"p",{},"JavaScript saytni o‘z-o‘zidan “SEO uchun yomon” qilib qo‘ymaydi. Google ko‘p yillardan beri JavaScript’ni rendering qiladi va 2026-yil mart oyida hatto JavaScript orqali yuklanadigan kontent Google Search uchun tabiatan qiyinroq degan tasavvur uyg‘otishi mumkin bo‘lgan eskirgan hujjatlarni olib tashladi. Asosiy muammo — bog‘liqliklarda: agar muhim kontent, linklar, metadata yoki xato holatlari faqat client-side kod muvaffaqiyatli ishlagandan keyin to‘g‘ri ko‘rinishga kelsa, qidiruv tizimlari sahifaning noto‘g‘ri versiyasini ko‘rishi ehtimoli oshadi.",[16,20,21],{},"Shuning uchun JavaScript SEO JavaScript’dan voz kechish haqida emas. Asosiy maqsad — sahifalarni topish, rendering qilish va indexing qilish mumkin bo‘ladigan, shu bilan birga semantik jihatdan to‘g‘ri qoladigan tarzda qurish.",[11,23,25],{"id":24},"qisqa-javob","Qisqa javob",[16,27,28,29,33],{},"JavaScript SEO — JavaScript asosidagi saytlarni qidiruv tizimlari tushuna olishi va indekslay olishi uchun moslashtirish amaliyoti. Google uchun asosiy jarayon ",[30,31,32],"strong",{},"crawl → render → index"," ko‘rinishida ishlaydi. Vazifa shundan iboratki, muhim URL’lar topilishi, rendering qilingan HTML kerakli kontentni o‘z ichiga olishi, HTTP javoblari sahifa holatini to‘g‘ri ko‘rsatishi va canonical URL, robots direktivalari, title, linklar hamda structured data kabi signallar bir-biriga mos qolishi kerak.",[16,35,36],{},[37,38,42],"a",{"href":39,"rel":40},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fjavascript\u002Fjavascript-seo-basics",[41],"nofollow","Google Search Central — Understand the JavaScript SEO basics",[11,44,46],{"id":45},"asosiy-faktlar","Asosiy faktlar",[48,49,50,63],"table",{},[51,52,53],"thead",{},[54,55,56,60],"tr",{},[57,58,59],"th",{},"Yo‘nalish",[57,61,62],{},"Nima muhim",[64,65,66,75,88,96,108,116,124],"tbody",{},[54,67,68,72],{},[69,70,71],"td",{},"Rendering",[69,73,74],{},"Google Search rendering uchun evergreen Chromium’dan foydalanadi.",[54,76,77,80],{},[69,78,79],{},"Linklar",[69,81,82,83,87],{},"Crawl qilinadigan navigatsiya uchun haqiqiy ",[84,85,86],"code",{},"\u003Ca href=\"...\">"," linklardan foydalaning.",[54,89,90,93],{},[69,91,92],{},"URL’lar",[69,94,95],{},"Index qilinadigan kontentga barqaror va noyob URL’lar bering.",[54,97,98,101],{},[69,99,100],{},"Status kodlar",[69,102,103,104,107],{},"Haqiqatan mavjud bo‘lmagan sahifalar yashirin tarzda ",[84,105,106],{},"200"," qaytarmasligi kerak.",[54,109,110,113],{},[69,111,112],{},"Metadata",[69,114,115],{},"Title, canonical va robots direktivalari bir-biriga mos bo‘lishi kerak.",[54,117,118,121],{},[69,119,120],{},"Lazy loading",[69,122,123],{},"Google muhim kontentga yetib borishi uchun bosish yoki scroll qilish talab etilmasligi kerak.",[54,125,126,129],{},[69,127,128],{},"Arxitektura",[69,130,131],{},"SSR, static rendering yoki hybrid rendering odatda rendering’ga bog‘liqlikni kamaytiradi.",[16,133,134,135,137,138,140],{},"Google JavaScript ilovalarni crawling, rendering va indexing bosqichlari orqali qayta ishlaydi. Googlebot sahifani birinchi marta olganida, dastlabki HTML ichidan linklarni allaqachon topa oladi. ",[84,136,106],{}," qaytaradigan sahifalar odatda rendering navbatiga qo‘yiladi, so‘ng Chromium JavaScript’ni bajaradi va Google hosil bo‘lgan HTML’ni yana qayta ishlaydi. ",[84,139,106],{}," bo‘lmagan javoblar esa rendering qilinmasligi mumkin.",[16,142,143],{},[37,144,42],{"href":39,"rel":145},[41],[11,147,149],{"id":148},"javascript-seo-nima","JavaScript SEO nima?",[16,151,152],{},"Single-page application sifatida qurilgan mahsulot sahifasini tasavvur qiling. Server dastlab taxminan shunday javob qaytaradi:",[154,155,161],"pre",{"className":156,"code":157,"language":158,"meta":159,"style":160},"language-html shiki shiki-themes github-light github-dark","\u003Cdiv id=\"app\">\u003C\u002Fdiv>\n\u003Cscript src=\"\u002Fapp.js\">\u003C\u002Fscript>\n","html","id=\"qd6hu0\"","",[84,162,163,195],{"__ignoreMap":160},[164,165,168,172,176,180,183,187,190,192],"span",{"class":166,"line":167},"line",1,[164,169,171],{"class":170},"sVt8B","\u003C",[164,173,175],{"class":174},"s9eBZ","div",[164,177,179],{"class":178},"sScJk"," id",[164,181,182],{"class":170},"=",[164,184,186],{"class":185},"sZZnC","\"app\"",[164,188,189],{"class":170},">\u003C\u002F",[164,191,175],{"class":174},[164,193,194],{"class":170},">\n",[164,196,198,200,203,206,208,211,213,215],{"class":166,"line":197},2,[164,199,171],{"class":170},[164,201,202],{"class":174},"script",[164,204,205],{"class":178}," src",[164,207,182],{"class":170},[164,209,210],{"class":185},"\"\u002Fapp.js\"",[164,212,189],{"class":170},[164,214,202],{"class":174},[164,216,194],{"class":170},[16,218,219],{},"Oddiy brauzer keyin JavaScript’ni yuklaydi, API’ga murojaat qiladi va mahsulot nomi, tavsifi, linklari, narxi hamda structured data’ni yaratadi.",[16,221,222],{},"Foydalanuvchi uchun bu jarayon mukammal ishlashi mumkin. Ammo SEO nuqtai nazaridan foydali sahifa faqat bir nechta qo‘shimcha bog‘liqliklar muvaffaqiyatli ishlagandan keyin paydo bo‘ladi: JavaScript yuklanishi, jiddiy xatosiz bajarilishi, API’ga yetib borishi, kerakli ma’lumotni olishi va DOM’ni to‘g‘ri yangilashi kerak.",[16,224,225,226],{},"JavaScript SEO oddiy muhandislik savolini beradi: ",[30,227,228],{},"crawler aslida nimani oladi va oxir-oqibat nimani rendering qiladi?",[16,230,231],{},[164,232,233],{},"INTERNAL LINK: Qidiruv tizimlari sahifalarni qanday crawl, render va index qiladi",[11,235,237],{"id":236},"rendering-arxitekturasi","Rendering arxitekturasi",[16,239,240],{},"Rendering strategiyasi muhim, chunki u sahifa client-side bajarilishiga qanchalik bog‘liqligini belgilaydi.",[48,242,243,256],{},[51,244,245],{},[54,246,247,250,253],{},[57,248,249],{},"Strategiya",[57,251,252],{},"Dastlabki javob",[57,254,255],{},"SEO uchun amaliy ahamiyati",[64,257,258,269,280,291],{},[54,259,260,263,266],{},[69,261,262],{},"Client-side rendering",[69,264,265],{},"Asosan app shell + JavaScript",[69,267,268],{},"Qidiruvga ko‘rinadigan kontent rendering’ga kuchli bog‘liq",[54,270,271,274,277],{},[69,272,273],{},"Server-side rendering",[69,275,276],{},"Sahifa HTML’i so‘rov vaqtida yaratiladi",[69,278,279],{},"Asosiy kontent darhol mavjud bo‘ladi",[54,281,282,285,288],{},[69,283,284],{},"Static rendering",[69,286,287],{},"HTML oldindan yaratiladi",[69,289,290],{},"Oldindan ma’lum bo‘lgan ochiq kontent uchun yaxshi mos keladi",[54,292,293,296,299],{},[69,294,295],{},"Hybrid rendering",[69,297,298],{},"Server\u002Fstatic HTML + client interaktivligi",[69,300,301],{},"Ko‘pincha amaliy muvozanat beradi",[16,303,304],{},"Google uzoq muddatli yechim sifatida dynamic rendering o‘rniga server-side rendering, static rendering yoki hydration’dan foydalanishni aniq tavsiya qiladi. Dynamic rendering — ya’ni botlarga maxsus rendering qilingan versiyani, foydalanuvchilarga esa JavaScript ilovasini berish — hozir murakkablik qo‘shadigan vaqtinchalik yechim sifatida tasvirlanadi.",[16,306,307],{},[37,308,311],{"href":309,"rel":310},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fjavascript\u002Fdynamic-rendering?authuser=683989221&utm_source=chatgpt.com",[41],"Google Search Central — Dynamic rendering as a workaround",[16,313,314,315,318],{},"Bu har bir SPA’ni qayta yozish kerak degani ",[30,316,317],{},"emas",". Client-side rendering asosidagi ilova ham index qilinishi mumkin. Asosiy arxitektura savoli boshqacha: SEO uchun muhim kontent HTML’da to‘g‘ridan-to‘g‘ri berilishi mumkin bo‘lsa, u client-side bajarilishiga bog‘liq bo‘lishi kerakmi?",[11,320,322],{"id":321},"crawl-qilinadigan-urllar-yarating","Crawl qilinadigan URL’lar yarating",[16,324,325],{},"JavaScript SEO’dagi eng ko‘p uchraydigan xatolardan biri — navigatsiyani link sifatida emas, faqat xatti-harakat sifatida qurish.",[16,327,328],{},"Afzal variant:",[154,330,333],{"className":156,"code":331,"language":158,"meta":332,"style":160},"\u003Ca href=\"\u002Fservices\u002Ftechnical-seo\">Technical SEO\u003C\u002Fa>\n","id=\"n68jks\"",[84,334,335],{"__ignoreMap":160},[164,336,337,339,341,344,346,349,352,354],{"class":166,"line":167},[164,338,171],{"class":170},[164,340,37],{"class":174},[164,342,343],{"class":178}," href",[164,345,182],{"class":170},[164,347,348],{"class":185},"\"\u002Fservices\u002Ftechnical-seo\"",[164,350,351],{"class":170},">Technical SEO\u003C\u002F",[164,353,37],{"class":174},[164,355,194],{"class":170},[16,357,358],{},"Quyidagiga o‘xshash usullarga tayanmang:",[154,360,363],{"className":156,"code":361,"language":158,"meta":362,"style":160},"\u003Cspan onclick=\"openService()\">Technical SEO\u003C\u002Fspan>\n","id=\"808vh3\"",[84,364,365],{"__ignoreMap":160},[164,366,367,369,371,374,376,379,382,385,387,389],{"class":166,"line":167},[164,368,171],{"class":170},[164,370,164],{"class":174},[164,372,373],{"class":178}," onclick",[164,375,182],{"class":170},[164,377,378],{"class":185},"\"",[164,380,381],{"class":178},"openService",[164,383,384],{"class":185},"()\"",[164,386,351],{"class":170},[164,388,164],{"class":174},[164,390,194],{"class":170},[16,392,393,394,397,398,401],{},"Google odatda crawl qilinadigan linklar ",[84,395,396],{},"\u003Ca>"," elementi va ",[84,399,400],{},"href"," atributi orqali qurilishini kutadi. JavaScript bunday linklarni dinamik tarzda yaratishi mumkin, ammo yakuniy DOM baribir to‘g‘ri anchor elementlari va ishlaydigan URL’larni o‘z ichiga olishi kerak.",[16,403,404],{},[37,405,408],{"href":406,"rel":407},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Flinks-crawlable?authuser=2&utm_source=chatgpt.com",[41],"Google Search Central — Link best practices for Google",[16,410,411,412,415],{},"SPA’larda alohida index qilinadigan kontentni ifodalash uchun ",[84,413,414],{},"#\u002Fproducts\u002F123"," kabi fragmentlardan foydalanmang. Google client-side routing uchun oddiy URL’lar va History API’dan foydalanishni tavsiya qiladi.",[16,417,418],{},[37,419,422],{"href":420,"rel":421},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fjavascript\u002Ffix-search-javascript",[41],"Google Search Central — Fix Search-related JavaScript problems",[16,424,425],{},[164,426,427],{},"INTERNAL LINK: JavaScript saytlarda ichki linklash",[11,429,431],{"id":430},"muhim-metadatani-himoya-qiling","Muhim metadata’ni himoya qiling",[16,433,434],{},"JavaScript title, meta description, canonical URL va robots direktivalarini o‘zgartira oladi, ammo bu tekshirilishi kerak bo‘lgan holatlar sonini oshiradi.",[16,436,437],{},"Canonical bilan ishlash ayniqsa ehtiyotkorlikni talab qiladi. Google JavaScript orqali qo‘shilgan canonical’ni qayta ishlay oladi, lekin JavaScript SEO hujjatlarida imkon qadar HTML’dan foydalanish tavsiya qilinadi. Agar canonical dastlabki HTML’da ham bo‘lsa va JavaScript orqali ham qo‘shilsa, bu signallar bir-biriga zid bo‘lmasligi kerak. Bir nechta yoki qarama-qarshi canonical elementlari kutilmagan natijaga olib kelishi mumkin.",[16,439,440],{},[37,441,42],{"href":39,"rel":442},[41],[16,444,445,446,449,450,452],{},"Robots direktivalari yanada ehtiyotkorlikni talab qiladi. Agar dastlabki HTML’da ",[84,447,448],{},"noindex"," bo‘lsa, Google rendering bosqichini o‘tkazib yuborishi mumkin. Shuning uchun keyinchalik JavaScript orqali ",[84,451,448],{},"’ni olib tashlash sahifani albatta tuzatadi deb hisoblash mumkin emas.",[16,454,455],{},[37,456,42],{"href":457,"rel":458},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fjavascript\u002Fjavascript-seo-basics?utm_source=chatgpt.com",[41],[16,460,461,462],{},"Foydali muhandislik qoidasi: ",[30,463,464],{},"SEO uchun muhim metadata imkon qadar erta va barqaror tarzda to‘g‘ri qiymatga ega bo‘lishi kerak.",[11,466,468],{"id":467},"xatolarni-togri-qayta-ishlang","Xatolarni to‘g‘ri qayta ishlang",[16,470,471,472,475],{},"SPA’lar ko‘pincha har qanday URL uchun — hatto mavjud bo‘lmagan mahsulot, maqola yoki profil uchun ham — ",[84,473,474],{},"HTTP 200"," bilan app shell qaytaradi.",[16,477,478],{},"Bu soft 404 xavfini tug‘diradi.",[16,480,481,482,485],{},"Tasavvur qiling, ",[84,483,484],{},"\u002Fproducts\u002Fdeleted-item"," xato xabarini ko‘rsatadi, lekin server baribir quyidagicha javob beradi:",[154,487,492],{"className":488,"code":489,"language":490,"meta":491,"style":160},"language-http shiki shiki-themes github-light github-dark","HTTP\u002F1.1 200 OK\n","http","id=\"f0nixq\"",[84,493,494],{"__ignoreMap":160},[164,495,496],{"class":166,"line":167},[164,497,489],{},[16,499,500,501,504,505,507],{},"Google bunday sahifani dastlab haqiqiy sahifa sifatida talqin qilishi mumkin. Google haqiqatan ",[84,502,503],{},"404"," qaytaradigan URL’ga yo‘naltirishni yoki haqiqiy HTTP status qaytarish amalda imkonsiz bo‘lsa, client-side error sahifaga ",[84,506,448],{}," qo‘shishni tavsiya qiladi.",[16,509,510],{},[37,511,422],{"href":420,"rel":512},[41],[16,514,515],{},"Imkon bo‘lsa, server javobini to‘g‘rilash yaxshiroq:",[154,517,520],{"className":488,"code":518,"language":490,"meta":519,"style":160},"HTTP\u002F1.1 404 Not Found\nContent-Type: text\u002Fhtml\n","id=\"mxqljq\"",[84,521,522,527],{"__ignoreMap":160},[164,523,524],{"class":166,"line":167},[164,525,526],{},"HTTP\u002F1.1 404 Not Found\n",[164,528,529],{"class":166,"line":197},[164,530,531],{},"Content-Type: text\u002Fhtml\n",[16,533,534],{},"Status kodlari shunchaki backend tafsiloti emas, balki SEO arxitekturasining bir qismidir.",[11,536,538],{"id":537},"lazy-loadingni-nazorat-qiling","Lazy loading’ni nazorat qiling",[16,540,541],{},"Lazy loading performance uchun foydali, ammo muhim kontent paydo bo‘lishi uchun foydalanuvchi harakati talab qilinmasligi kerak.",[16,543,544,545,548],{},"Google Search kontentni yuklash uchun tugma bosmaydi yoki sahifani scroll qilmaydi. Shuning uchun Google kontent viewport’ga kirganda yuklanadigan usullarni, masalan brauzerning native lazy loading imkoniyati yoki ",[84,546,547],{},"IntersectionObserver","’ni tavsiya qiladi. Foydalanuvchi harakatini talab qiladigan yechimlarga tayanish kerak emas.",[16,550,551],{},[37,552,555],{"href":553,"rel":554},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fjavascript\u002Flazy-loading",[41],"Google Search Central — Fix lazy-loaded content",[16,557,558],{},"Infinite scroll uchun ham shunga o‘xshash tamoyil amal qiladi. Har bir index qilinadigan bo‘lak doimiy URL’ga ega bo‘lishi va oddiy linklar orqali ochilishi kerak; scroll foydalanuvchi tajribasini yaxshilashi mumkin, lekin kontentni topishning yagona usuli bo‘lmasligi kerak.",[11,560,562],{"id":561},"structured-data","Structured Data",[16,564,565],{},"Google JavaScript orqali yaratilgan JSON-LD’ni, agar u rendering qilingan DOM’da mavjud bo‘lsa, qayta ishlay oladi. Bu client-side yaratilgan structured data texnik jihatdan yaroqli ekanini anglatadi. Shunga qaramay, Google rendering qilingan natijani Rich Results Test orqali tekshirishni tavsiya qiladi. Tez-tez o‘zgaradigan ecommerce ma’lumotlari uchun hujjatlarda dinamik yaratilgan product markup’ning ishonchliligi bo‘yicha alohida cheklovlar ham qayd etilgan.",[16,567,568],{},[37,569,572],{"href":570,"rel":571},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fgenerate-structured-data-with-javascript",[41],"Google Search Central — Generate structured data with JavaScript",[16,574,575],{},"Oldindan ma’lum bo‘lgan page-level schema uchun JSON-LD’ni server yoki static rendering vaqtida yaratish odatda ortiqcha bog‘liqlikni kamaytiradi.",[11,577,579],{"id":578},"javascript-seoni-diagnostika-qilish","JavaScript SEO’ni diagnostika qilish",[16,581,582,583,586,587,590],{},"Foydali debugging jarayoni ",[30,584,585],{},"server nima yuborishini"," va ",[30,588,589],{},"Google nimani rendering qilishini"," solishtiradi.",[48,592,593,603],{},[51,594,595],{},[54,596,597,600],{},[57,598,599],{},"Bosqich",[57,601,602],{},"Savol",[64,604,605,613,621,629,637,645,653,661],{},[54,606,607,610],{},[69,608,609],{},"Simptom",[69,611,612],{},"Kontent, URL yoki rich result Search’da yo‘qmi?",[54,614,615,618],{},[69,616,617],{},"O‘lchash",[69,619,620],{},"URL Inspection nimani ko‘rsatadi?",[54,622,623,626],{},[69,624,625],{},"Dastlabki HTML",[69,627,628],{},"Muhim kontent shu yerning o‘zida bormi?",[54,630,631,634],{},[69,632,633],{},"Rendering qilingan HTML",[69,635,636],{},"Google rendering qilgandan keyin kontent paydo bo‘ladimi?",[54,638,639,642],{},[69,640,641],{},"Resurslar",[69,643,644],{},"JavaScript yoki API so‘rovlarida xato bo‘ldimi?",[54,646,647,650],{},[69,648,649],{},"Signallar",[69,651,652],{},"Canonical, robots va status holatlari to‘g‘rimi?",[54,654,655,658],{},[69,656,657],{},"Tuzatish",[69,659,660],{},"Eng avval buzilayotgan bog‘liqlikni tuzating",[54,662,663,666],{},[69,664,665],{},"Qayta o‘lchash",[69,667,668],{},"Live URL va rendering qilingan HTML’ni yana tekshiring",[16,670,671],{},"Google rendering qilingan HTML, yuklangan resurslar, JavaScript xatolari va boshqa rendering ma’lumotlarini tekshirish uchun aynan URL Inspection Tool va Rich Results Test’dan foydalanishni tavsiya qiladi. Faqat client-side analytics’ga tayanish Googlebot yoki Web Rendering Service faoliyatini aniq ko‘rsatmasligi mumkin.",[16,673,674],{},[37,675,422],{"href":676,"rel":677},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fjavascript\u002Ffix-search-javascript?utm_source=chatgpt.com",[41],[11,679,681],{"id":680},"javascript-va-performance","JavaScript va performance",[16,683,684],{},"JavaScript SEO performance bilan ham bog‘liq. Katta hajmdagi client-side JavaScript yuklanishi, parsing qilinishi, kompilyatsiya qilinishi va brauzerning main thread’ida bajarilishi kerak. Bu ishlar interaktivlikni kechiktirishi va INP ko‘rsatkichini yomonlashtirishi mumkin.",[16,686,687],{},[37,688,691],{"href":689,"rel":690},"https:\u002F\u002Fweb.dev\u002Farticles\u002Foptimize-inp?utm_source=chatgpt.com",[41],"web.dev — Optimize Interaction to Next Paint",[16,693,694,695,698,699,586,702,705],{},"Google Core Web Vitals’ni ranking systems’da ishlatiladigan signallar qatorida ko‘rsatadi, lekin yaxshi natijalar yuqori pozitsiyani kafolatlamasligini ham ta’kidlaydi. Hozirgi “good” chegaralar: ",[30,696,697],{},"LCP 2.5 soniyadan oshmasligi",", ",[30,700,701],{},"INP 200 millisekunddan past bo‘lishi",[30,703,704],{},"CLS 0.1 dan past bo‘lishi"," kerak.",[16,707,708],{},[37,709,712],{"href":710,"rel":711},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fcore-web-vitals?utm_source=chatgpt.com",[41],"Google Search Central — Understanding Core Web Vitals and Google search results",[16,714,715],{},[164,716,717],{},"INTERNAL LINK: Web performance va Core Web Vitals",[11,719,721],{"id":720},"kop-uchraydigan-xatolar","Ko‘p uchraydigan xatolar",[16,723,724,725,727,728,730],{},"JavaScript SEO’dagi eng jiddiy muammolar odatda oddiy muhandislik xatolaridan kelib chiqadi: haqiqiy linksiz navigatsiya, faqat ishonchsiz API so‘rovlaridan keyin mavjud bo‘ladigan kontent, mavjud bo‘lmagan obyektlar uchun noto‘g‘ri ",[84,726,106],{}," javoblari, bir-biriga zid canonical’lar, dastlabki HTML’dagi ",[84,729,448],{}," direktivasini JavaScript orqali keyin olib tashlashga urinish, foydalanuvchi harakati ortiga yashirilgan kontent va server HTML’dan kutilmagan tarzda farq qiladigan rendering qilingan sahifalar.",[16,732,733],{},"Yana bir xato — “Google JavaScript’ni rendering qiladi” degan gap rendering’ni endi test qilish shart emasligini anglatadi deb o‘ylash. Google haqiqatan ham JavaScript’ni rendering qiladi, ammo uning hujjatlarida hanuz cheklovlar, rendering navbatlari va rendering o‘tkazib yuborilishi mumkin bo‘lgan holatlar tasvirlangan. Boshqa crawler’lar JavaScript bilan boshqacha ishlashi yoki umuman bajarmasligi mumkin.",[16,735,736],{},[37,737,42],{"href":39,"rel":738},[41],[11,740,742],{"id":741},"seonest-tavsiyasi","SeoNest tavsiyasi",[16,744,745,746,749],{},"JavaScript SEO’ga ",[30,747,748],{},"bog‘liqliklarni bosqichma-bosqich kamaytirish"," sifatida qarang.",[16,751,752],{},"Qidiruv uchun muhim ochiq ma’lumotlar — asosiy kontent, navigatsiya, canonical signallari, indexing direktivalari, amalda ma’qul bo‘lsa structured data va to‘g‘ri HTTP holatlari — imkon qadar uzun client-side bajarilish zanjiriga bog‘liq bo‘lmasligi kerak. JavaScript’dan haqiqatdan ham interaktivlik kerak bo‘lgan joylarda foydalaning, barcha SEO signallarini qaytadan qurish uchun emas.",[16,754,755],{},"Zamonaviy framework’larda bu odatda index qilinadigan route’lar uchun SSR, static generation yoki hybrid strategiyadan foydalanish, client-side komponentlarni esa interaktivlik haqiqatan zarur bo‘lgan joylarda saqlab qolishni anglatadi.",[11,757,759],{"id":758},"faq","FAQ",[761,762,764],"h4",{"id":763},"google-javascript-saytlarni-index-qila-oladimi","Google JavaScript saytlarni index qila oladimi?",[16,766,767],{},"Ha. Google Search JavaScript’ni evergreen Chromium orqali bajaradi va rendering qilingan HTML ichidagi kontentni index qiladi.",[16,769,770],{},[37,771,42],{"href":39,"rel":772},[41],[761,774,776],{"id":775},"client-side-rendering-seo-uchun-yomonmi","Client-side rendering SEO uchun yomonmi?",[16,778,779],{},"O‘z-o‘zidan emas. Xavf muhim kontent va signallar client-side bajarilishining muvaffaqiyatli ishlashiga bog‘liq bo‘lganda paydo bo‘ladi. Google ham JavaScript orqali yuklanadigan kontentni faqat JavaScript ishlatilgani sababli tabiatan qiyinroq deb ta’riflamaydi.",[16,781,782],{},[37,783,786],{"href":784,"rel":785},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fupdates?authuser=01&hl=en&utm_source=chatgpt.com",[41],"Google Search updates",[761,788,790],{"id":789},"seo-uchun-ssr-majburiymi","SEO uchun SSR majburiymi?",[16,792,793],{},"Yo‘q. Google client-side ilovalarni rendering qila oladi. SSR yoki static rendering — muhim kontentni ertaroq taqdim etish va rendering’ga bog‘liqlikni kamaytirishga yordam beradigan muhandislik tanlovidir. Google shuningdek, har bir bot JavaScript’ni bajara olmasligini ham qayd etadi.",[16,795,796],{},[37,797,42],{"href":39,"rel":798},[41],[761,800,802],{"id":801},"canonicalni-javascript-orqali-yaratish-kerakmi","Canonical’ni JavaScript orqali yaratish kerakmi?",[16,804,805],{},"Mumkin, ammo amaliy bo‘lsa HTML afzalroq. Agar canonical JavaScript orqali berilsa, bir-biriga zid yoki takroriy canonical signallaridan saqlaning.",[16,807,808],{},[37,809,42],{"href":39,"rel":810},[41],[761,812,814],{"id":813},"google-aslida-nimani-korayotganini-qanday-bilsam-boladi","Google aslida nimani ko‘rayotganini qanday bilsam bo‘ladi?",[16,816,817],{},"Search Console’dagi URL Inspection Tool yoki Rich Results Test’dan foydalaning va rendering qilingan HTML, resurslar yuklanishi hamda JavaScript xatolarini tekshiring.",[16,819,820],{},[37,821,422],{"href":420,"rel":822},[41],[11,824,826],{"id":825},"yakuniy-xulosa","Yakuniy xulosa",[16,828,829],{},"JavaScript SEO JavaScript’ni olib tashlash haqida emas. Uning maqsadi muhim qidiruv signallarini barqaror qilishdir.",[16,831,832],{},"Texnik jihatdan sog‘lom JavaScript sayt crawler’larga haqiqiy URL’lar, crawl qilinadigan linklar, to‘g‘ri HTTP javoblari, barqaror metadata va rendering jarayonidan keyin ham saqlanib qoladigan kontentni beradi. Shu poydevor ishonchli bo‘lsa, JavaScript organik qidiruv uchun yagona nosozlik nuqtasiga aylanmasdan boy interaktiv tajriba yaratishi mumkin.",[11,834,836],{"id":835},"sources","Sources",[838,839,840,852,861,870,878,887,895,903],"ol",{},[841,842,843,844,848,849],"li",{},"Google Search Central — ",[845,846,847],"em",{},"Understand the JavaScript SEO basics",", updated March 4, 2026.\n",[37,850,39],{"href":39,"rel":851},[41],[841,853,843,854,857,858],{},[845,855,856],{},"Fix Search-related JavaScript problems",", updated December 18, 2025.\n",[37,859,420],{"href":420,"rel":860},[41],[841,862,843,863,866,867],{},[845,864,865],{},"Dynamic rendering as a workaround",", updated December 10, 2025.\n",[37,868,309],{"href":309,"rel":869},[41],[841,871,843,872,866,875],{},[845,873,874],{},"Fix lazy-loaded content",[37,876,553],{"href":553,"rel":877},[41],[841,879,843,880,883,884],{},[845,881,882],{},"Link best practices for Google",".\n",[37,885,406],{"href":406,"rel":886},[41],[841,888,843,889,866,892],{},[845,890,891],{},"Generate structured data with JavaScript",[37,893,570],{"href":570,"rel":894},[41],[841,896,843,897,866,900],{},[845,898,899],{},"Understanding Core Web Vitals and Google search results",[37,901,710],{"href":710,"rel":902},[41],[841,904,905,906,909,910],{},"web.dev — Addy Osmani and Jason Miller, ",[845,907,908],{},"Rendering on the Web",", updated January 5, 2026.\n",[37,911,912],{"href":912,"rel":913},"https:\u002F\u002Fweb.dev\u002Farticles\u002Frendering-on-the-web?authuser=9&utm_source=chatgpt.com",[41],[915,916,917],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":160,"searchDepth":197,"depth":197,"links":919},[920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936],{"id":13,"depth":197,"text":14},{"id":24,"depth":197,"text":25},{"id":45,"depth":197,"text":46},{"id":148,"depth":197,"text":149},{"id":236,"depth":197,"text":237},{"id":321,"depth":197,"text":322},{"id":430,"depth":197,"text":431},{"id":467,"depth":197,"text":468},{"id":537,"depth":197,"text":538},{"id":561,"depth":197,"text":562},{"id":578,"depth":197,"text":579},{"id":680,"depth":197,"text":681},{"id":720,"depth":197,"text":721},{"id":741,"depth":197,"text":742},{"id":758,"depth":197,"text":759},{"id":825,"depth":197,"text":826},{"id":835,"depth":197,"text":836},"SEO","JavaScript crawling, rendering va indexing’ga qanday ta’sir qilishini, SEO muammolarini qanday aniqlashni va CSR, SSR, static yoki hybrid rendering’dan qachon foydalanishni bilib oling.",false,"md",true,"\u002Fjavascript-seo.png","Javascript SEO rasmi ","uz",{},"\u002Fblog\u002Fuz\u002Fjavaskript-seo","2026-09-12",{"title":5,"description":938},"javaskript-seo","blog\u002Fuz\u002Fjavaskript-seo","javascript-seo","sh95ReOgM7nu1dDcW7vJyMavpYu7spX4EhzY5I3x-zg",[954,956,959],{"locale":955,"slug":951},"en",{"locale":957,"slug":958},"ru","javackript-seo",{"locale":944,"slug":949},[961,1828,2890,4115,4875,5769,6605,8093],{"id":962,"title":963,"author":6,"body":964,"category":1816,"description":1817,"draft":939,"extension":940,"featured":941,"image":1818,"imageAlt":1819,"locale":944,"meta":1820,"navigation":941,"path":1821,"publishedAt":1822,"seo":1823,"slug":1824,"stem":1825,"translationKey":1826,"updatedAt":1822,"__hash__":1827},"blog\u002Fblog\u002Fuz\u002Famaliy-checklist.md","ChatGPT Search uchun sayt mosligini tekshirish: amaliy checklist",{"type":8,"value":965,"toc":1800},[966,969,976,992,994,997,1022,1028,1032,1132,1136,1147,1150,1168,1171,1203,1209,1230,1235,1239,1245,1263,1266,1293,1299,1308,1312,1315,1325,1332,1335,1355,1358,1378,1385,1389,1518,1528,1532,1535,1541,1552,1555,1560,1564,1569,1579,1586,1589,1591,1597,1600,1609,1611,1614,1619,1625,1628,1630,1634,1640,1644,1650,1654,1666,1670,1681,1685,1691,1693,1699,1702,1706,1797],[11,967,963],{"id":968},"chatgpt-search-uchun-sayt-mosligini-tekshirish-amaliy-checklist",[16,970,971,972,975],{},"Sayt Google nuqtayi nazaridan texnik jihatdan to‘liq ishlayotgan bo‘lsa ham, ChatGPT Search uchun yopiq bo‘lishi mumkin. Sababi oddiy: ChatGPT Search o‘zining ",[84,973,974],{},"OAI-SearchBot"," crawler’iga ega va robots.txt, CDN, WAF, firewall yoki botlardan himoya tizimi uni Googlebot’dan mustaqil ravishda bloklashi mumkin.",[16,977,978,979,981,982,985,986,991],{},"OpenAI’ning amaldagi ko‘rsatmalarida Search uchun texnik eligibility — ya’ni qidiruvda ko‘rib chiqilish imkoniyati — bo‘yicha ikkita asosiy talab ko‘rsatilgan: ",[84,980,974],{}," saytni crawl qilishiga ruxsat berish va hosting yoki CDN OpenAI e’lon qilgan SearchBot IP diapazonlaridan kelayotgan trafikni bloklamayotganini tekshirish. Bu tekshiruvlardan o‘tish saytni natijalarda ko‘rinish uchun mos qiladi, ammo ChatGPT uni muayyan so‘rov bo‘yicha tanlashi yoki rank qilishi ",[30,983,984],{},"kafolatlanmaydi",". (",[37,987,990],{"href":988,"rel":989},"https:\u002F\u002Fhelp.openai.com\u002Fen\u002Farticles\u002F9237897-chatgpt-search%3F.avif",[41],"help.openai.com",")",[11,993,25],{"id":24},[16,995,996],{},"Saytning ChatGPT Search uchun texnik mosligini tekshirishda quyidagilarni tasdiqlang:",[838,998,999,1002,1007,1010,1013],{},[841,1000,1001],{},"kontent ommaga ochiq;",[841,1003,1004,1006],{},[84,1005,974],{}," robots.txt orqali bloklanmagan;",[841,1008,1009],{},"CDN, firewall, WAF yoki botlardan himoya tizimi OpenAI e’lon qilgan IP diapazonlaridan kelayotgan haqiqiy OAI-SearchBot trafikini qabul qiladi;",[841,1011,1012],{},"sahifalar authentication, CAPTCHA, challenge, 403 yoki rate limit to‘sig‘i o‘rniga normal HTTP javob qaytaradi;",[841,1014,1015,1018,1019,1021],{},[84,1016,1017],{},"GPTBot"," boshqaruvi ",[84,1020,974],{}," boshqaruvi bilan adashtirilmagan.",[16,1023,1024,1025,991],{},"OpenAI Search natijalaridagi joylashuv relevance va reliability bilan bog‘liq bir nechta omilga tayanganini hamda placement kafolatlanmasligini aytadi. Shuning uchun eligibility — birinchi texnik bosqich, ranking strategiyasi emas. (",[37,1026,990],{"href":988,"rel":1027},[41],[11,1029,1031],{"id":1030},"eligibility-checklist","Eligibility checklist",[48,1033,1034,1047],{},[51,1035,1036],{},[54,1037,1038,1041,1044],{},[57,1039,1040],{},"Tekshiruv",[57,1042,1043],{},"Kerakli natija",[57,1045,1046],{},"O‘tmasa nima qilish kerak",[64,1048,1049,1060,1083,1094,1105,1121],{},[54,1050,1051,1054,1057],{},[69,1052,1053],{},"Ochiq URL",[69,1055,1056],{},"Sahifa authentication’siz ochiladi",[69,1058,1059],{},"Ommaga mo‘ljallangan kontentni ochiq qilish",[54,1061,1062,1067,1072],{},[69,1063,1064],{},[84,1065,1066],{},"robots.txt",[69,1068,1069,1071],{},[84,1070,974],{}," kerakli yo‘llarni crawl qila oladi",[69,1073,1074,1075,1078,1079,1082],{},"Mos ",[84,1076,1077],{},"Allow"," \u002F ",[84,1080,1081],{},"Disallow"," qoidalarini tuzatish",[54,1084,1085,1088,1091],{},[69,1086,1087],{},"CDN \u002F WAF",[69,1089,1090],{},"Tasdiqlangan SearchBot trafiki qabul qilinadi",[69,1092,1093],{},"Bot qoidalari yoki IP allowlist’ni yangilash",[54,1095,1096,1099,1102],{},[69,1097,1098],{},"HTTP javob",[69,1100,1101],{},"403\u002F429\u002Fchallenge o‘rniga normal sahifa javobi",[69,1103,1104],{},"Server, CDN va security log’larini tekshirish",[54,1106,1107,1110,1116],{},[69,1108,1109],{},"Search va training",[69,1111,1112,1113,1115],{},"Search access ",[84,1114,974],{}," orqali boshqariladi",[69,1117,1118,1120],{},[84,1119,1017],{},"’ni Search boshqaruvi sifatida ishlatmaslik",[54,1122,1123,1126,1129],{},[69,1124,1125],{},"O‘zgarishdan keyingi tekshiruv",[69,1127,1128],{},"Konfiguratsiya yangilanishdan keyin ham ochiq qoladi",[69,1130,1131],{},"OpenAI tizimlari yangilangach log’larni qayta tekshirish",[11,1133,1135],{"id":1134},"oai-searchbotni-tekshirish","OAI-SearchBot’ni tekshirish",[16,1137,1138,1139,1141,1142,991],{},"OpenAI ",[84,1140,974],{},"’ni saytlarni ChatGPT qidiruv funksiyalarida ko‘rsatish uchun ishlatiladigan crawler sifatida belgilaydi. Hujjatlarda crawler’ga robots.txt orqali ruxsat berish va OpenAI e’lon qilgan SearchBot IP diapazonlaridan kelayotgan so‘rovlarni qabul qilish to‘g‘ridan-to‘g‘ri tavsiya etilgan. (",[37,1143,1146],{"href":1144,"rel":1145},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fbots",[41],"developers.openai.com",[16,1148,1149],{},"Minimal konfiguratsiya:",[154,1151,1156],{"className":1152,"code":1153,"language":1154,"meta":1155,"style":160},"language-txt shiki shiki-themes github-light github-dark","User-agent: OAI-SearchBot\nAllow: \u002F\n","txt","id=\"3lfbob\"",[84,1157,1158,1163],{"__ignoreMap":160},[164,1159,1160],{"class":166,"line":167},[164,1161,1162],{},"User-agent: OAI-SearchBot\n",[164,1164,1165],{"class":166,"line":197},[164,1166,1167],{},"Allow: \u002F\n",[16,1169,1170],{},"Agar ChatGPT Search’ga ruxsat bermoqchi bo‘lsangiz, lekin saytingiz GPTBot tomonidan model training’i uchun potensial foydalanish maqsadida crawl qilinishini istamasangiz, bu ikki boshqaruvni alohida sozlash mumkin:",[154,1172,1175],{"className":1152,"code":1173,"language":1154,"meta":1174,"style":160},"User-agent: OAI-SearchBot\nAllow: \u002F\n\nUser-agent: GPTBot\nDisallow: \u002F\n","id=\"9cmjbx\"",[84,1176,1177,1181,1185,1191,1197],{"__ignoreMap":160},[164,1178,1179],{"class":166,"line":167},[164,1180,1162],{},[164,1182,1183],{"class":166,"line":197},[164,1184,1167],{},[164,1186,1188],{"class":166,"line":1187},3,[164,1189,1190],{"emptyLinePlaceholder":941},"\n",[164,1192,1194],{"class":166,"line":1193},4,[164,1195,1196],{},"User-agent: GPTBot\n",[164,1198,1200],{"class":166,"line":1199},5,[164,1201,1202],{},"Disallow: \u002F\n",[16,1204,1205,1206,991],{},"OpenAI bu sozlamalarni bir-biridan mustaqil deb hujjatlashtiradi. Search’ga ruxsat berish GPTBot’ga ham ruxsat berishni talab qilmaydi. (",[37,1207,1146],{"href":1144,"rel":1208},[41],[16,1210,1211,1212,586,1214,1216,1217,1219,1220,1222,1223,1226,1227,991],{},"Bu farq muhim, chunki ",[84,1213,1017],{},[84,1215,974],{}," turli vazifalarni bajaradi. ",[84,1218,1017],{}," OpenAI’ning generative AI foundation model’larini training qilishda ishlatilishi mumkin bo‘lgan crawling bilan bog‘liq. ",[84,1221,974],{}," esa Search uchun avtomatik crawling’ni boshqaradi. ",[84,1224,1225],{},"ChatGPT-User"," esa ayrim foydalanuvchi tashabbusi bilan amalga oshiriladigan tashriflarni ifodalaydi va Search’ga kiritilish imkoniyatini belgilaydigan crawler emas. (",[37,1228,1146],{"href":1144,"rel":1229},[41],[16,1231,1232],{},[164,1233,1234],{},"INTERNAL LINK: OAI-SearchBot nima?",[11,1236,1238],{"id":1237},"robotstxtni-sinchiklab-tekshirish","robots.txt’ni sinchiklab tekshirish",[16,1240,1241,1242,1244],{},"robots.txt ichidan shunchaki ",[84,1243,974],{}," matnini qidirish yetarli emas. Unga amalda qaysi qoidalar tatbiq etilishini tekshirish kerak.",[16,1246,1247,1248,1250,1251,1253,1254,1257,1258,991],{},"Robots Exclusion Protocol crawler qoidalarini user-agent guruhlari hamda yo‘llar uchun ",[84,1249,1077],{}," yoki ",[84,1252,1081],{}," direktivalari orqali belgilaydi. Agar crawler uchun alohida guruh mos kelmasa, unga ",[84,1255,1256],{},"User-agent: *"," guruhi qo‘llanishi mumkin. Yo‘l bo‘yicha aniqroq qoidalar kamroq aniq mos keladigan qoidalardan ustun turadi. (",[37,1259,1262],{"href":1260,"rel":1261},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc9309.html?utm_source=chatgpt.com",[41],"rfc-editor.org",[16,1264,1265],{},"Masalan:",[154,1267,1270],{"className":1152,"code":1268,"language":1154,"meta":1269,"style":160},"User-agent: *\nDisallow: \u002F\n\nUser-agent: OAI-SearchBot\nAllow: \u002F\n","id=\"tilkti\"",[84,1271,1272,1277,1281,1285,1289],{"__ignoreMap":160},[164,1273,1274],{"class":166,"line":167},[164,1275,1276],{},"User-agent: *\n",[164,1278,1279],{"class":166,"line":197},[164,1280,1202],{},[164,1282,1283],{"class":166,"line":1187},[164,1284,1190],{"emptyLinePlaceholder":941},[164,1286,1287],{"class":166,"line":1193},[164,1288,1162],{},[164,1290,1291],{"class":166,"line":1199},[164,1292,1167],{},[16,1294,1295,1296,1298],{},"Shu sababli alohida ",[84,1297,974],{}," guruhi umumiy crawler siyosatidan farqli siyosatni ifodalashi mumkin.",[16,1300,1301,1304,1305,991],{},[84,1302,1303],{},"\u002Frobots.txt"," faylining o‘zi ham barqaror ishlayotganini tekshiring. RFC 9309 robots fayli mavjud bo‘lmagan holat bilan server yoki tarmoq xatosi tufayli unga yetib bo‘lmaydigan holatni bir-biridan ajratadi. Shu sababli doimiy 5xx yoki connectivity muammosi robots fayli umuman yo‘qligidan boshqa oqibatlarga olib kelishi mumkin. (",[37,1306,1262],{"href":1260,"rel":1307},[41],[11,1309,1311],{"id":1310},"infratuzilma-qatlamini-tekshirish","Infratuzilma qatlamini tekshirish",[16,1313,1314],{},"robots.txt to‘g‘ri bo‘lishi OpenAI sahifani amalda yuklay olishini hali isbotlamaydi.",[16,1316,1317,1318,1321,1322,991],{},"OpenAI publisher’larga host yoki CDN e’lon qilingan SearchBot IP manzillaridan kelayotgan trafikni qabul qilishini tasdiqlashni alohida tavsiya qiladi. Joriy diapazonlar doimiy ravishda hujjatga ko‘chirib qo‘yiladigan statik ro‘yxat sifatida emas, OpenAI’ning ",[84,1319,1320],{},"searchbot.json"," faylida yuritiladi. (",[37,1323,990],{"href":988,"rel":1324},[41],[16,1326,1327,1328,991],{},"Bu ayniqsa sayt Cloudflare, Akamai, managed WAF, maxsus firewall qoidalari, rate limiting yoki anti-bot tizimlaridan foydalansa muhim. OpenAI crawler trafiki 403 javoblari, avtomatik bot mitigation, JavaScript challenge, CAPTCHA, authentication tekshiruvlari yoki rate limiting sababli bloklanishi mumkinligini qayd etadi. (",[37,1329,990],{"href":1330,"rel":1331},"https:\u002F\u002Fhelp.openai.com\u002Fen\u002Farticles\u002F20001243-advertiser-guidance-for-allowing-openai-web-crawlers",[41],[16,1333,1334],{},"Server tomonda quyidagi ikkala tekshiruv ham foydali:",[154,1336,1341],{"className":1337,"code":1338,"language":1339,"meta":1340,"style":160},"language-bash shiki shiki-themes github-light github-dark","curl -I https:\u002F\u002Fexample.com\u002Fpage\n","bash","id=\"q7c4eu\"",[84,1342,1343],{"__ignoreMap":160},[164,1344,1345,1348,1352],{"class":166,"line":167},[164,1346,1347],{"class":178},"curl",[164,1349,1351],{"class":1350},"sj4cs"," -I",[164,1353,1354],{"class":185}," https:\u002F\u002Fexample.com\u002Fpage\n",[16,1356,1357],{},"va:",[154,1359,1362],{"className":1337,"code":1360,"language":1339,"meta":1361,"style":160},"curl -A \"OAI-SearchBot\" -I https:\u002F\u002Fexample.com\u002Fpage\n","id=\"rzdgs9\"",[84,1363,1364],{"__ignoreMap":160},[164,1365,1366,1368,1371,1374,1376],{"class":166,"line":167},[164,1367,1347],{"class":178},[164,1369,1370],{"class":1350}," -A",[164,1372,1373],{"class":185}," \"OAI-SearchBot\"",[164,1375,1351],{"class":1350},[164,1377,1354],{"class":185},[16,1379,1380,1381,1384],{},"Ikkinchi so‘rov user-agent’ga bog‘liq application qoidalarini aniqlashga yordam berishi mumkin, ammo u ",[30,1382,1383],{},"haqiqiy OpenAI trafiki ruxsat etilganini isbotlamaydi",". Chunki bu so‘rov OpenAI SearchBot IP manzilidan kelmaydi. Infratuzilmaning haqiqiy xatti-harakatini OpenAI e’lon qilgan IP diapazonlari asosida CDN\u002FWAF konfiguratsiyasi va log’lar orqali tasdiqlash kerak.",[11,1386,1388],{"id":1387},"access-muammolarini-diagnostika-qilish","Access muammolarini diagnostika qilish",[48,1390,1391,1410],{},[51,1392,1393],{},[54,1394,1395,1398,1401,1404,1407],{},[57,1396,1397],{},"Belgisi",[57,1399,1400],{},"Nimani o‘lchash kerak",[57,1402,1403],{},"Ehtimoliy sabab",[57,1405,1406],{},"Qanday tasdiqlash",[57,1408,1409],{},"Yechim",[64,1411,1412,1431,1450,1467,1484,1501],{},[54,1413,1414,1419,1422,1425,1428],{},[69,1415,1416,1418],{},[84,1417,974],{}," sahifalargacha umuman yetib bormaydi",[69,1420,1421],{},"CDN\u002FWAF log’lari",[69,1423,1424],{},"Edge qatlamida blok",[69,1426,1427],{},"Rad etilgan bot\u002FIP event’larini tekshirish",[69,1429,1430],{},"Tasdiqlangan SearchBot trafikiga ruxsat berish",[54,1432,1433,1438,1441,1444,1447],{},[69,1434,1435,1437],{},[84,1436,1303],{}," olinadi, lekin sahifalar olinmaydi",[69,1439,1440],{},"robots.txt qoidalari",[69,1442,1443],{},"Crawl cheklovi",[69,1445,1446],{},"Mos user-agent guruhini tekshirish",[69,1448,1449],{},"Qoidalarni tuzatish",[54,1451,1452,1455,1458,1461,1464],{},[69,1453,1454],{},"So‘rovlar 403 oladi",[69,1456,1457],{},"HTTP\u002Fserver log’lari",[69,1459,1460],{},"Firewall yoki bot protection",[69,1462,1463],{},"Security event’ni tekshirish",[69,1465,1466],{},"WAF siyosatini sozlash",[54,1468,1469,1472,1475,1478,1481],{},[69,1470,1471],{},"So‘rovlar 429 oladi",[69,1473,1474],{},"Rate-limit log’lari",[69,1476,1477],{},"Avtomatik throttling",[69,1479,1480],{},"Vaqt va crawler trafikini solishtirish",[69,1482,1483],{},"Legitimate bot limitlarini sozlash",[54,1485,1486,1489,1492,1495,1498],{},[69,1487,1488],{},"Brauzerda ishlaydi, crawler’da ishlamaydi",[69,1490,1491],{},"Challenge\u002FCAPTCHA xatti-harakati",[69,1493,1494],{},"Human-verification qatlami",[69,1496,1497],{},"Bot request yo‘lini qayta yaratish",[69,1499,1500],{},"Legitimate crawler’ni tekshiruvdan chiqarish",[54,1502,1503,1506,1509,1512,1515],{},[69,1504,1505],{},"Konfiguratsiya hozirgina o‘zgardi",[69,1507,1508],{},"Robots o‘zgarishidan keyingi vaqt",[69,1510,1511],{},"Tizimlar hali yangilanmagan",[69,1513,1514],{},"Keyinroq qayta tekshirish",[69,1516,1517],{},"Yangilanishni kutish",[16,1519,1520,1521,1524,1525,991],{},"OpenAI robots.txt yangilangandan keyin Search tizimlari o‘zgarishga moslashishi uchun taxminan ",[30,1522,1523],{},"24 soat"," kerak bo‘lishi mumkinligini qayd etadi. Bu operatsion taxmin, sahifa 24 soatdan keyin albatta Search’da ko‘rinadi degan kafolat emas. (",[37,1526,1146],{"href":1144,"rel":1527},[41],[11,1529,1531],{"id":1530},"eligibility-ranking-degani-emas","Eligibility ranking degani emas",[16,1533,1534],{},"Auditdan muvaffaqiyatli o‘tish crawling uchun eligibility’ni tasdiqlaydi. Bu saytning ko‘rinishini kafolatlamaydi.",[16,1536,1537,1538,991],{},"OpenAI ChatGPT Search foydalanuvchilarga relevant va ishonchli ma’lumot topishga yordam berish uchun natijalarni bir nechta omil asosida rank qilishini va placement kafolatlanmasligini ochiq aytadi. OpenAI Search ranking algoritmining to‘liq mexanizmini yoki ranking factor’larning aniq og‘irliklarini ommaga e’lon qilmagan. (",[37,1539,990],{"href":988,"rel":1540},[41],[16,1542,1543,1544,1547,1548,1551],{},"Shuning uchun tez-tez tilga olinadigan ayrim usullarni ChatGPT Search eligibility uchun rasmiy talab sifatida ko‘rsatish mumkin emas. OpenAI’ning amaldagi ochiq eligibility ko‘rsatmalarida XML sitemap, ",[84,1545,1546],{},"llms.txt",", schema markup, GPTBot’ga ruxsat yoki maxsus “AI SEO” meta tag Search’ga kirish uchun majburiy shart sifatida ",[30,1549,1550],{},"ko‘rsatilmagan",".",[16,1553,1554],{},"Bu texnologiyalarning boshqa foydali qo‘llanishlari bo‘lishi mumkin, ammo dalilsiz ularni majburiy talab sifatida ko‘rsatmaslik kerak.",[16,1556,1557],{},[164,1558,1559],{},"INTERNAL LINK: ChatGPT Search va an’anaviy qidiruv",[11,1561,1563],{"id":1562},"haqiqiy-trafikni-olchash","Haqiqiy trafikni o‘lchash",[16,1565,1566,1568],{},[84,1567,974],{},"’ga ruxsat bergan publisher’lar analytics orqali keyingi bosqichdagi dalillarni ham kuzatishi mumkin. OpenAI ChatGPT referral URL’lariga avtomatik ravishda quyidagi parametr qo‘shilishini aytadi:",[154,1570,1573],{"className":1152,"code":1571,"language":1154,"meta":1572,"style":160},"utm_source=chatgpt.com\n","id=\"1izyov\"",[84,1574,1575],{"__ignoreMap":160},[164,1576,1577],{"class":166,"line":167},[164,1578,1571],{},[16,1580,1581,1582,991],{},"Bu ChatGPT’dan kelayotgan referral trafikni analytics platformalarida alohida ajratishni osonlashtiradi. (",[37,1583,990],{"href":1584,"rel":1585},"https:\u002F\u002Fhelp.openai.com\u002Fen\u002Farticles\u002F12627856-publishers-and-developers-faq%23%3A~%3Atext%3DChatGPT%2520automatically%2520includes%2520the%2520UTM%2520parameter%2520utm_source%253Dchatgpt.com%2520in%2520referral%2520URLs%252C%2520enabling%2520clear%2520tracking%2520and%2520analysis%2520of%2520inbound%2520traffic%2520from%2520ChatGPT%2520search%2520results.",[41],[16,1587,1588],{},"Referral trafik va crawler log’lari turli savollarga javob beradi. Log’lar OpenAI saytga yetib bora oladimi, shuni ko‘rsatadi. Referral ma’lumotlari esa foydalanuvchilar ChatGPT’dan saytga o‘tgan-o‘tmaganini ko‘rsatadi. Ularning hech biri alohida holda sahifa qanchalik tez-tez ko‘rib chiqilgani, rank qilingani, iqtibos qilingani yoki natijalardan chiqarib yuborilganini isbotlamaydi.",[11,1590,721],{"id":720},[16,1592,1593,1594,1596],{},"Eng muhim xatolardan biri — ChatGPT Search access’ni Google indexing bilan bir xil deb hisoblash. Ular bir xil emas. Sayt Googlebot’ga ruxsat berib, shu bilan birga ",[84,1595,974],{},"’ni robots.txt yoki infratuzilma darajasida bloklashi mumkin.",[16,1598,1599],{},"Yana bir xato — robots.txt ichida user-agent’ga ruxsat berib, WAF o‘sha crawler’ni yashirin ravishda bloklayotganini e’tibordan chetda qoldirish. Teskarisi ham bo‘lishi mumkin: tarmoq so‘rovni o‘tkazadi, ammo robots.txt kontentni crawl qilishni taqiqlaydi.",[16,1601,1602,1603,1605,1606,991],{},"Nihoyat, ",[84,1604,1017],{},"’ni bloklash saytni avtomatik ravishda ChatGPT Search’dan chiqarib tashlamaydi. OpenAI training va Search boshqaruvlarini ataylab bir-biridan ajratgan. (",[37,1607,1146],{"href":1144,"rel":1608},[41],[11,1610,742],{"id":741},[16,1612,1613],{},"Auditni ikki alohida bosqich sifatida ko‘ring:",[16,1615,1616],{},[30,1617,1618],{},"Crawler siyosati → infratuzilma orqali access.",[16,1620,1621,1622,1624],{},"Avval robots.txt ",[84,1623,974],{},"’ga ruxsat berayotganini tasdiqlang. Keyin OpenAI e’lon qilgan SearchBot infratuzilmasidan kelayotgan haqiqiy so‘rov security yoki application to‘siqlarisiz sahifaga yetib bora olishini tekshiring.",[16,1626,1627],{},"Faqat shu ikki tekshiruvdan keyin content relevance, authority, page quality, entity clarity yoki boshqa visibility omillarini tahlil qilishga o‘tish kerak. Aks holda crawler saytga barqaror kira olmayotgan paytda “ChatGPT uchun optimizatsiya”ga vaqt sarflashingiz mumkin.",[11,1629,759],{"id":758},[761,1631,1633],{"id":1632},"oai-searchbotga-ruxsat-berish-chatgptda-korinishni-kafolatlaydimi","OAI-SearchBot’ga ruxsat berish ChatGPT’da ko‘rinishni kafolatlaydimi?",[16,1635,1636,1637,991],{},"Yo‘q. Bu crawling va potensial inclusion uchun eligibility beradi, ammo OpenAI placement kafolatlanmasligini aytadi. (",[37,1638,990],{"href":988,"rel":1639},[41],[761,1641,1643],{"id":1642},"gptbotga-ham-ruxsat-berish-kerakmi","GPTBot’ga ham ruxsat berish kerakmi?",[16,1645,1646,1647,991],{},"ChatGPT Search eligibility uchun shart emas. OpenAI GPTBot va OAI-SearchBot’ni bir-biridan mustaqil boshqaruvlar sifatida hujjatlashtiradi. (",[37,1648,1146],{"href":1144,"rel":1649},[41],[761,1651,1653],{"id":1652},"trainingni-bloklab-searchga-ruxsat-berish-mumkinmi","Training’ni bloklab, Search’ga ruxsat berish mumkinmi?",[16,1655,1656,1657,1659,1660,1662,1663,991],{},"Ha. ",[84,1658,974],{},"’ga ruxsat berib, ",[84,1661,1017],{},"’ni bloklash mumkin. (",[37,1664,1146],{"href":1144,"rel":1665},[41],[761,1667,1669],{"id":1668},"searchbot-ip-manzillarini-kodga-qattiq-yozib-qoyish-kerakmi","SearchBot IP manzillarini kodga qattiq yozib qo‘yish kerakmi?",[16,1671,1672,1673,1675,1676,991],{},"Crawler infratuzilmasi o‘zgarishi mumkinligi sababli OpenAI e’lon qilgan ",[84,1674,1320],{}," faylidan aktual manba sifatida foydalanish ma’qul. (",[37,1677,1680],{"href":1678,"rel":1679},"https:\u002F\u002Fopenai.com\u002Fsearchbot.json",[41],"openai.com",[761,1682,1684],{"id":1683},"robotstxt-ozgarishlari-qancha-vaqtda-qollanadi","robots.txt o‘zgarishlari qancha vaqtda qo‘llanadi?",[16,1686,1687,1688,991],{},"OpenAI Search tizimlari robots.txt yangilangandan keyin yangi konfiguratsiyani hisobga olishi uchun taxminan 24 soat kerak bo‘lishi mumkinligini aytadi. (",[37,1689,1146],{"href":1144,"rel":1690},[41],[11,1692,826],{"id":825},[16,1694,1695,1696],{},"ChatGPT Search eligibility auditi, avvalo, access auditidir. Asosiy savol “yetarlicha AI SEO markup qo‘shdikmi?” emas. Asosiy savol: ",[30,1697,1698],{},"OAI-SearchBot kontentga qoidalar va infratuzilma nuqtayi nazaridan kira oladimi?",[16,1700,1701],{},"robots.txt’ni tekshiring, OpenAI’ning amaldagi SearchBot IP diapazonlarini infratuzilmangiz siyosati bilan solishtiring, WAF va server javoblarini ko‘rib chiqing, GPTBot boshqaruvini alohida saqlang hamda crawler faolligi va referral trafikni kuzating. Shu asoslar to‘g‘ri ishlagandan keyin Search visibility access muammosi emas, relevance va content selection masalasiga aylanadi.",[11,1703,1705],{"id":1704},"manbalar","Manbalar",[838,1707,1708,1723,1737,1751,1765,1779],{},[841,1709,1710,1713,1714,1719,1720,991],{},[30,1711,1712],{},"OpenAI — “Searching the web with ChatGPT.”"," Updated August 2026. Eligibility bo‘yicha ko‘rsatmalar, placement kafolatlanmasligi va SearchBot infratuzilmasiga qo‘yilgan talablar. ",[37,1715,1718],{"href":1716,"rel":1717},"https:\u002F\u002Fhelp.openai.com\u002Fen\u002Farticles\u002F9237897?utm_source=chatgpt.com",[41],"OpenAI: Searching the web with ChatGPT"," (",[37,1721,990],{"href":988,"rel":1722},[41],[841,1724,1725,1728,1729,1719,1734,991],{},[30,1726,1727],{},"OpenAI — “Overview of OpenAI Crawlers.”"," Amaldagi developer hujjatlari. OAI-SearchBot, GPTBot va ChatGPT-User ta’riflari va boshqaruvi; robots.txt yangilanishi uchun taxminan 24 soatlik qayd. ",[37,1730,1733],{"href":1731,"rel":1732},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fbots?utm_source=chatgpt.com",[41],"OpenAI Crawlers documentation",[37,1735,1146],{"href":1144,"rel":1736},[41],[841,1738,1739,1742,1743,1719,1748,991],{},[30,1740,1741],{},"OpenAI — “Publishers and Developers – FAQ.”"," Updated August 2026. Publisher discovery bo‘yicha ko‘rsatmalar va ChatGPT referral tracking. ",[37,1744,1747],{"href":1745,"rel":1746},"https:\u002F\u002Fhelp.openai.com\u002Fen\u002Farticles\u002F12627856-publishers-and-developers-faq?utm_source=chatgpt.com",[41],"OpenAI Publishers and Developers FAQ",[37,1749,990],{"href":1584,"rel":1750},[41],[841,1752,1753,1756,1757,1719,1762,991],{},[30,1754,1755],{},"OpenAI — SearchBot published IP ranges."," OAI-SearchBot network prefix’lari uchun amaldagi machine-readable manba. ",[37,1758,1761],{"href":1759,"rel":1760},"https:\u002F\u002Fopenai.com\u002Fsearchbot.json?utm_source=chatgpt.com",[41],"OpenAI searchbot.json",[37,1763,1680],{"href":1678,"rel":1764},[41],[841,1766,1767,1770,1771,1719,1776,991],{},[30,1768,1769],{},"OpenAI — “Advertiser Guidance for Allowing OpenAI Web Crawlers.”"," Updated September 20, 2026. WAF, CDN, bot protection, CAPTCHA, 403 javoblari va rate limiting’ni qamrab olgan amaliy crawler troubleshooting qo‘llanmasi. ",[37,1772,1775],{"href":1773,"rel":1774},"https:\u002F\u002Fhelp.openai.com\u002Fen\u002Farticles\u002F20001243-advertiser-guidance-for-allowing-openai-web-crawlers?utm_source=chatgpt.com",[41],"OpenAI crawler troubleshooting guidance",[37,1777,990],{"href":1330,"rel":1778},[41],[841,1780,1781,1784,1785,1078,1787,1789,1790,1719,1794,991],{},[30,1782,1783],{},"IETF — RFC 9309: Robots Exclusion Protocol."," September 2022. robots.txt parsing, user-agent matching, ",[84,1786,1077],{},[84,1788,1081],{},", access xatti-harakati va caching’ning standards-track ta’rifi. ",[37,1791,1793],{"href":1260,"rel":1792},[41],"RFC 9309",[37,1795,1262],{"href":1260,"rel":1796},[41],[915,1798,1799],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":160,"searchDepth":197,"depth":197,"links":1801},[1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815],{"id":968,"depth":197,"text":963},{"id":24,"depth":197,"text":25},{"id":1030,"depth":197,"text":1031},{"id":1134,"depth":197,"text":1135},{"id":1237,"depth":197,"text":1238},{"id":1310,"depth":197,"text":1311},{"id":1387,"depth":197,"text":1388},{"id":1530,"depth":197,"text":1531},{"id":1562,"depth":197,"text":1563},{"id":720,"depth":197,"text":721},{"id":741,"depth":197,"text":742},{"id":758,"depth":197,"text":759},{"id":825,"depth":197,"text":826},{"id":1704,"depth":197,"text":1705},"AI","Saytingizni ChatGPT Search uchun tekshiring: OAI-SearchBot, robots.txt, OpenAI IP diapazonlari, CDN\u002FWAF access, HTTP javoblari va keng tarqalgan crawler bloklari.","\u002Fchatchpt-audit.png","Eligibility Audit",{},"\u002Fblog\u002Fuz\u002Famaliy-checklist","2026-09-20",{"title":963,"description":1817},"amaliy-checklist","blog\u002Fuz\u002Famaliy-checklist","eligibility-audit","gSrFNclp5Nzfc1CxAEqK93ElHXI29VlkLqLq8KrBJGY",{"id":1829,"title":1830,"author":6,"body":1831,"category":2879,"description":2880,"draft":939,"extension":940,"featured":941,"image":2881,"imageAlt":2882,"locale":944,"meta":2883,"navigation":941,"path":2884,"publishedAt":1822,"seo":2885,"slug":2886,"stem":2887,"translationKey":2888,"updatedAt":1822,"__hash__":2889},"blog\u002Fblog\u002Fuz\u002Fcls-tushunchasi.md","CLS: Cumulative Layout Shift nima?",{"type":8,"value":1832,"toc":2848},[1833,1837,1844,1852,1856,1861,1871,1874,1877,1881,1884,1928,1935,1942,1946,1949,1955,1967,1972,1976,1983,1986,1995,2001,2010,2013,2020,2027,2032,2035,2041,2051,2054,2058,2061,2075,2078,2081,2085,2088,2092,2095,2098,2156,2159,2208,2222,2226,2229,2232,2235,2269,2279,2283,2286,2289,2293,2296,2319,2323,2336,2339,2378,2381,2410,2422,2426,2433,2441,2448,2455,2458,2463,2469,2473,2476,2479,2485,2492,2497,2501,2504,2638,2648,2652,2658,2664,2670,2676,2678,2681,2684,2695,2697,2701,2707,2711,2721,2725,2728,2732,2735,2739,2745,2747,2753,2756,2759,2761,2845],[11,1834,1836],{"id":1835},"cls-explained-cumulative-layout-shift","CLS Explained: Cumulative Layout Shift",[16,1838,1839,1840,1843],{},"Sahifa tez yuklanishi mumkin, lekin baribir buzilgandek taassurot qoldiradi. Siz matnni o‘qiy boshlaysiz, rasm paydo bo‘ladi, matn birdan pastga siljiydi va bosmoqchi bo‘lgan tugmangiz boshqa joyga ko‘chib qoladi. ",[30,1841,1842],{},"Cumulative Layout Shift (CLS)"," aynan shunday vizual beqarorlikni o‘lchaydi.",[16,1845,1846,1847,991],{},"CLS — Largest Contentful Paint (LCP) va Interaction to Next Paint (INP) bilan birga Google’ning uchta Core Web Vitals ko‘rsatkichidan biri. Boshqa ikki metrikadan farqli ravishda, CLS millisekundlarda o‘lchanmaydi. U ko‘rinib turgan kontent qanchalik kutilmaganda siljiganini va bu siljish qanchalik sezilarli bo‘lganini ifodalovchi o‘lchov birligisiz qiymat beradi. (",[37,1848,1851],{"href":1849,"rel":1850},"https:\u002F\u002Fweb.dev\u002Farticles\u002Fcls?authuser=6",[41],"web.dev",[11,1853,1855],{"id":1854},"cls-nima","CLS nima?",[16,1857,1858],{},[30,1859,1860],{},"Cumulative Layout Shift veb-sahifaning vizual barqarorligini ko‘rinib turgan kontentning kutilmagan siljishlarini o‘lchash orqali baholaydi.",[16,1862,1863,1864,1867,1868,991],{},"Layout shift — ko‘rinib turgan element ikki render qilingan frame orasida boshlang‘ich joylashuvini o‘zgartirgan holat. CLS kutilmagan siljishlarni ",[30,1865,1866],{},"session windows"," deb ataladigan qisqa guruhlarga birlashtiradi va umumiy shift score eng katta bo‘lgan session window’ni hisobga oladi. (",[37,1869,1851],{"href":1849,"rel":1870},[41],[16,1872,1873],{},"Oddiy misol: brauzer maqola sarlavhasi va matnini avval render qiladi, keyin esa tepada o‘lchami oldindan ajratilmagan rasm yuklanadi. Rasm joy egallaydi, maqolani pastga suradi va foydalanuvchi o‘qiyotgan joyini yana topishga majbur bo‘ladi.",[16,1875,1876],{},"Bu siljish CLS’ga ta’sir qiladi.",[11,1878,1880],{"id":1879},"cls-bahosi","CLS bahosi",[16,1882,1883],{},"Google’ning amaldagi chegaralari:",[48,1885,1886,1896],{},[51,1887,1888],{},[54,1889,1890,1893],{},[57,1891,1892],{},"CLS",[57,1894,1895],{},"Baho",[64,1897,1898,1908,1918],{},[54,1899,1900,1905],{},[69,1901,1902],{},[30,1903,1904],{},"0.10 yoki past",[69,1906,1907],{},"Yaxshi",[54,1909,1910,1915],{},[69,1911,1912],{},[30,1913,1914],{},"0.10 dan yuqori, 0.25 gacha",[69,1916,1917],{},"Yaxshilash kerak",[54,1919,1920,1925],{},[69,1921,1922],{},[30,1923,1924],{},"0.25 dan yuqori",[69,1926,1927],{},"Yomon",[16,1929,1930,1931,1934],{},"Core Web Vitals baholashida Google sahifa tashriflarining ",[30,1932,1933],{},"75-percentiliga"," qarashni va mobile hamda desktop tashriflarni alohida baholashni tavsiya qiladi. Amalda bu tashriflarning kamida 75 foizida CLS 0.10 yoki undan past bo‘lishi kerakligini anglatadi.",[16,1936,1937,1938,1941],{},"CLS o‘lchov birligiga ega emas. ",[84,1939,1940],{},"0.1"," qiymati 0.1 soniya degani emas. U kutilmagan vizual siljishlarning umumiy jiddiyligini ifodalaydi.",[11,1943,1945],{"id":1944},"cls-nima-uchun-muhim","CLS nima uchun muhim?",[16,1947,1948],{},"Layout beqarorligi usability’ga bevosita ta’sir qiladi.",[16,1950,1951,1952,991],{},"Siljish sabab foydalanuvchi matnda qayerda qolganini yo‘qotishi, forma elementi undan foydalanayotgan paytda joyini o‘zgartirishi yoki foydalanuvchi bosmoqchi bo‘lgan tugma o‘rniga tasodifan boshqa tugmani bosishi mumkin. Muammo ayniqsa sekin tarmoqlarda seziladi, chunki rasmlar, reklamalar, fontlar, API javoblari va third-party kontent local development’dagidan kechroq yuklanishi mumkin. (",[37,1953,1851],{"href":1849,"rel":1954},[41],[16,1956,1957,1958,1961,1962,991],{},"CLS qidiruv natijalari uchun ham ahamiyatli. Google Core Web Vitals’ni ranking tizimlarida ishlatiladigan signallardan biri sifatida ko‘rsatadi va Search hamda user experience uchun yaxshi Core Web Vitals natijalariga erishishni tavsiya qiladi. Biroq yaxshi CLS ",[30,1959,1960],{},"yuqoriroq ranking’ni kafolatlamaydi",". Google ko‘plab signallarni hisobga oladi va Core Web Vitals page experience’ning faqat bir qismi hisoblanadi. (",[37,1963,1966],{"href":1964,"rel":1965},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fcore-web-vitals?authuser=1",[41],"developers.google.com",[16,1968,1969],{},[164,1970,1971],{},"INTERNAL LINK: Core Web Vitals Explained",[11,1973,1975],{"id":1974},"cls-qanday-ishlaydi","CLS qanday ishlaydi?",[16,1977,1978,1979,1982],{},"CLS alohida ",[30,1980,1981],{},"layout shift score","’lardan boshlanadi.",[16,1984,1985],{},"Har bir tegishli shift uchun brauzer ikkita omilni baholaydi:",[154,1987,1993],{"className":1988,"code":1990,"language":1991,"meta":1992},[1989],"language-text","layout shift score = impact fraction × distance fraction\n","text","id=\"xqw4z5\"",[84,1994,1990],{"__ignoreMap":160},[16,1996,1997,2000],{},[30,1998,1999],{},"Impact fraction"," beqaror elementlar siljishdan oldin va keyin viewport’ning qanchalik katta qismini egallaganini ko‘rsatadi.",[16,2002,2003,2006,2007,991],{},[30,2004,2005],{},"Distance fraction"," esa eng ko‘p siljigan beqaror element viewport’ning eng katta o‘lchamiga nisbatan qanchalik uzoqqa ko‘chganini o‘lchaydi. (",[37,2008,1851],{"href":1849,"rel":2009},[41],[16,2011,2012],{},"Masalan, siljigan element viewport’ning 75 foiziga ta’sir qilsa va viewport’ning eng katta o‘lchamining 25 foiziga teng masofaga ko‘chsa:",[154,2014,2018],{"className":2015,"code":2016,"language":1991,"meta":2017},[1989],"0.75 × 0.25 = 0.1875\n","id=\"r4jbee\"",[84,2019,2016],{"__ignoreMap":160},[16,2021,2022,2023,2026],{},"Bu hodisa uchun layout shift score ",[84,2024,2025],{},"0.1875"," bo‘ladi.",[2028,2029,2031],"h3",{"id":2030},"session-windows","Session Windows",[16,2033,2034],{},"Hozirgi CLS sahifa mavjud bo‘lgan butun vaqt davomida yuz bergan barcha layout shift’larni oddiygina qo‘shib chiqmaydi.",[16,2036,2037,2038,2040],{},"Alohida kutilmagan shift’lar ",[30,2039,1866],{}," ichiga birlashtiriladi. Bitta session window ichidagi shift’lar orasidagi vaqt bir soniyadan kam bo‘lishi kerak va session window ko‘pi bilan besh soniya davom etishi mumkin.",[16,2042,2043,2044,2047,2048,991],{},"Sahifaning CLS qiymati ",[30,2045,2046],{},"eng katta session window"," ichidagi umumiy score hisoblanadi. (",[37,2049,1851],{"href":1849,"rel":2050},[41],[16,2052,2053],{},"Bu yondashuv single-page applications va infinite-scroll interfeyslar kabi uzoq vaqt ochiq turadigan sahifalarni foydalanuvchi ularni ko‘proq vaqt ochiq qoldirgani uchungina avtomatik ravishda yomon baholashning oldini oladi.",[11,2055,2057],{"id":2056},"kutilgan-siljishlar","Kutilgan siljishlar",[16,2059,2060],{},"Har qanday harakat CLS’ga ta’sir qilmaydi.",[16,2062,2063,2064,2067,2068,2071,2072,991],{},"Click, tap yoki keypress kabi aniq foydalanuvchi harakatidan bevosita kelib chiqqan siljish, agar u shu harakatdan keyin ",[30,2065,2066],{},"500 millisekund"," ichida sodir bo‘lsa, hisobga olinmasligi mumkin. Layout Instability API bu holatni ",[84,2069,2070],{},"hadRecentInput"," xususiyati orqali ko‘rsatadi. (",[37,2073,1851],{"href":1849,"rel":2074},[41],[16,2076,2077],{},"Masalan, foydalanuvchi bosgandan keyin accordion darhol ochilsa, bu odatda kutilgan harakat hisoblanadi.",[16,2079,2080],{},"Lekin scrolling boshqacha ishlaydi. Scrolling kabi uzluksiz interaction’lar shu usulda hisobdan chiqarilmaydi. Agar lazy-loaded kontent foydalanuvchi scroll qilayotgan paytda mavjud kontentni birdan pastga sursa, bu siljish CLS’ga ta’sir qilishi mumkin.",[11,2082,2084],{"id":2083},"clsning-asosiy-sabablari","CLS’ning asosiy sabablari",[16,2086,2087],{},"Eng ko‘p uchraydigan sabablar odatda juda oddiy.",[2028,2089,2091],{"id":2090},"olchami-korsatilmagan-rasmlar","O‘lchami ko‘rsatilmagan rasmlar",[16,2093,2094],{},"O‘lchami oldindan ma’lum bo‘lmagan rasm dastlab juda kam joy egallashi yoki umuman joy egallamasligi mumkin. Rasm yuklangach, brauzer uning o‘lchamini aniqlaydi va atrofdagi kontentni siljitadi.",[16,2096,2097],{},"HTML’da kerakli joyni oldindan ajrating:",[154,2099,2102],{"className":156,"code":2100,"language":158,"meta":2101,"style":160},"\u003Cimg\n  src=\"product.jpg\"\n  width=\"1200\"\n  height=\"800\"\n  alt=\"Product\"\n>\n","id=\"j2e4rj\"",[84,2103,2104,2111,2121,2131,2141,2151],{"__ignoreMap":160},[164,2105,2106,2108],{"class":166,"line":167},[164,2107,171],{"class":170},[164,2109,2110],{"class":174},"img\n",[164,2112,2113,2116,2118],{"class":166,"line":197},[164,2114,2115],{"class":178},"  src",[164,2117,182],{"class":170},[164,2119,2120],{"class":185},"\"product.jpg\"\n",[164,2122,2123,2126,2128],{"class":166,"line":1187},[164,2124,2125],{"class":178},"  width",[164,2127,182],{"class":170},[164,2129,2130],{"class":185},"\"1200\"\n",[164,2132,2133,2136,2138],{"class":166,"line":1193},[164,2134,2135],{"class":178},"  height",[164,2137,182],{"class":170},[164,2139,2140],{"class":185},"\"800\"\n",[164,2142,2143,2146,2148],{"class":166,"line":1199},[164,2144,2145],{"class":178},"  alt",[164,2147,182],{"class":170},[164,2149,2150],{"class":185},"\"Product\"\n",[164,2152,2154],{"class":166,"line":2153},6,[164,2155,194],{"class":170},[16,2157,2158],{},"Responsive CSS rasm o‘lchamini baribir moslashtira oladi:",[154,2160,2165],{"className":2161,"code":2162,"language":2163,"meta":2164,"style":160},"language-css shiki shiki-themes github-light github-dark","img {\n  width: 100%;\n  height: auto;\n}\n","css","id=\"24jqep\"",[84,2166,2167,2175,2192,2203],{"__ignoreMap":160},[164,2168,2169,2172],{"class":166,"line":167},[164,2170,2171],{"class":174},"img",[164,2173,2174],{"class":170}," {\n",[164,2176,2177,2179,2182,2185,2189],{"class":166,"line":197},[164,2178,2125],{"class":1350},[164,2180,2181],{"class":170},": ",[164,2183,2184],{"class":1350},"100",[164,2186,2188],{"class":2187},"szBVR","%",[164,2190,2191],{"class":170},";\n",[164,2193,2194,2196,2198,2201],{"class":166,"line":1187},[164,2195,2135],{"class":1350},[164,2197,2181],{"class":170},[164,2199,2200],{"class":1350},"auto",[164,2202,2191],{"class":170},[164,2204,2205],{"class":166,"line":1193},[164,2206,2207],{"class":170},"}\n",[16,2209,2210,2211,586,2214,2217,2218,991],{},"Zamonaviy brauzerlar ",[84,2212,2213],{},"width",[84,2215,2216],{},"height"," atributlari orqali rasm to‘liq yuklanishidan oldin uning aspect ratio’sini aniqlashi mumkin. (",[37,2219,1851],{"href":2220,"rel":2221},"https:\u002F\u002Fweb.dev\u002Farticles\u002Foptimize-cls",[41],[2028,2223,2225],{"id":2224},"reklama-va-embedlar","Reklama va embed’lar",[16,2227,2228],{},"Reklamalar, video embed’lar, xaritalar, social widget’lar va iframe’lar ko‘pincha atrofdagi kontentdan keyin yuklanadi.",[16,2230,2231],{},"Agar ularning container’i dastlab balandlikka ega bo‘lmasa, kontent paydo bo‘lganda pastdagi barcha elementlar siljishi mumkin.",[16,2233,2234],{},"Joyni oldindan ajrating:",[154,2236,2239],{"className":2161,"code":2237,"language":2163,"meta":2238,"style":160},".video-wrapper {\n  aspect-ratio: 16 \u002F 9;\n}\n","id=\"hok5l2\"",[84,2240,2241,2248,2265],{"__ignoreMap":160},[164,2242,2243,2246],{"class":166,"line":167},[164,2244,2245],{"class":178},".video-wrapper",[164,2247,2174],{"class":170},[164,2249,2250,2253,2255,2258,2260,2263],{"class":166,"line":197},[164,2251,2252],{"class":1350},"  aspect-ratio",[164,2254,2181],{"class":170},[164,2256,2257],{"class":1350},"16",[164,2259,1078],{"class":170},[164,2261,2262],{"class":1350},"9",[164,2264,2191],{"class":170},[164,2266,2267],{"class":166,"line":1187},[164,2268,2207],{"class":170},[16,2270,2271,2272,2275,2276,991],{},"Balandligi o‘zgaruvchan kontent uchun mos ",[84,2273,2274],{},"min-height"," yoki placeholder siljishni kamaytirishi mumkin. Reklama chiqmagan holatda rezerv qilingan joyni olib tashlashning o‘zi ham yangi layout shift keltirib chiqarishi mumkin, shuning uchun placeholder’larni ehtiyotkorlik bilan loyihalash kerak. (",[37,2277,1851],{"href":2220,"rel":2278},[41],[2028,2280,2282],{"id":2281},"dinamik-kontent","Dinamik kontent",[16,2284,2285],{},"Cookie bildirishnomalari, promo bannerlar, alert’lar, tavsiyalar va asinxron yuklanadigan komponentlar foydalanuvchi allaqachon ko‘rib turgan kontentning yuqorisiga qo‘shilsa, katta siljishlarga sabab bo‘lishi mumkin.",[16,2287,2288],{},"Yaxshiroq yechim — joyni oldindan ajratish yoki mos holatlarda komponentni document flow ichiga qo‘shish o‘rniga overlay sifatida ko‘rsatish.",[2028,2290,2292],{"id":2291},"web-fonts","Web Fonts",[16,2294,2295],{},"Fallback font va yakuniy web font belgilar kengligi, line height yoki boshqa metrikalarda farq qilishi mumkin. Asosiy font yuklanganda matn satrlari boshqacha o‘raladi va atrofdagi kontent siljishi mumkin.",[16,2297,2298,2299,2302,2303,698,2306,698,2309,586,2312,2315,2316,991],{},"Yechimlar orasida mosroq fallback font tanlash, muhim fontlarni ertaroq yuklash, ",[84,2300,2301],{},"font-display","’dan to‘g‘ri foydalanish hamda fallback font metrikalarini ",[84,2304,2305],{},"size-adjust",[84,2307,2308],{},"ascent-override",[84,2310,2311],{},"descent-override",[84,2313,2314],{},"line-gap-override"," kabi xususiyatlar orqali moslashtirish bor. (",[37,2317,1851],{"href":2220,"rel":2318},[41],[2028,2320,2322],{"id":2321},"layoutga-tasir-qiladigan-animatsiyalar","Layout’ga ta’sir qiladigan animatsiyalar",[16,2324,2325,698,2328,698,2331,1250,2333,2335],{},[84,2326,2327],{},"top",[84,2329,2330],{},"left",[84,2332,2213],{},[84,2334,2216],{}," kabi xususiyatlarni animatsiya qilish layout’ni o‘zgartirishi mumkin.",[16,2337,2338],{},"Imkon bo‘lsa, compositor uchun qulayroq transform’lardan foydalaning:",[154,2340,2343],{"className":2161,"code":2341,"language":2163,"meta":2342,"style":160},".card {\n  transform: translateY(20px);\n}\n","id=\"0kaxf5\"",[84,2344,2345,2352,2374],{"__ignoreMap":160},[164,2346,2347,2350],{"class":166,"line":167},[164,2348,2349],{"class":178},".card",[164,2351,2174],{"class":170},[164,2353,2354,2357,2359,2362,2365,2368,2371],{"class":166,"line":197},[164,2355,2356],{"class":1350},"  transform",[164,2358,2181],{"class":170},[164,2360,2361],{"class":1350},"translateY",[164,2363,2364],{"class":170},"(",[164,2366,2367],{"class":1350},"20",[164,2369,2370],{"class":2187},"px",[164,2372,2373],{"class":170},");\n",[164,2375,2376],{"class":166,"line":1187},[164,2377,2207],{"class":170},[16,2379,2380],{},"buning o‘rniga:",[154,2382,2385],{"className":2161,"code":2383,"language":2163,"meta":2384,"style":160},".card {\n  top: 20px;\n}\n","id=\"zj1j9t\"",[84,2386,2387,2393,2406],{"__ignoreMap":160},[164,2388,2389,2391],{"class":166,"line":167},[164,2390,2349],{"class":178},[164,2392,2174],{"class":170},[164,2394,2395,2398,2400,2402,2404],{"class":166,"line":197},[164,2396,2397],{"class":1350},"  top",[164,2399,2181],{"class":170},[164,2401,2367],{"class":1350},[164,2403,2370],{"class":2187},[164,2405,2191],{"class":170},[164,2407,2408],{"class":166,"line":1187},[164,2409,2207],{"class":170},[16,2411,2412,1250,2415,2418,2419,991],{},[84,2413,2414],{},"transform: translate()",[84,2416,2417],{},"transform: scale()"," elementni vizual ravishda siljitishi mumkin va shu turdagi layout shift’ni keltirib chiqarmaydi. (",[37,2420,1851],{"href":1849,"rel":2421},[41],[11,2423,2425],{"id":2424},"clsni-qanday-olchash-kerak","CLS’ni qanday o‘lchash kerak?",[16,2427,2428,2429,2432],{},"Avvalo ",[30,2430,2431],{},"field data","’dan boshlang.",[16,2434,2435,2436,991],{},"Chrome UX Report (CrUX) CLS’ni ham o‘z ichiga olgan, real foydalanuvchilardan yig‘ilgan agregat Core Web Vitals ma’lumotlarini taqdim etadi. Yetarli ma’lumot mavjud bo‘lsa, PageSpeed Insights CrUX field data’ni ko‘rsatishi mumkin, Search Console esa sahifalarni Core Web Vitals report orqali guruhlaydi. CrUX CLS’ni 75-percentilda ko‘rsatadi va uni o‘lchov birligisiz metrika sifatida baholaydi. (",[37,2437,2440],{"href":2438,"rel":2439},"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fcrux\u002Fapi?utm_source=chatgpt.com",[41],"developer.chrome.com",[16,2442,2443,2444,2447],{},"Keyin muammoni tahlil qilish uchun ",[30,2445,2446],{},"lab tools","’dan foydalaning.",[16,2449,2450,2451,991],{},"Chrome DevTools’dagi Performance panel individual layout shift’larni ko‘rsatadi va ularni cluster’larga birlashtiradi. Shift score’lar, ta’sirlangan elementlar, timing, screenshot’lar va ehtimoliy sabablarni ko‘rish mumkin. Chrome’dagi Rendering vositalari ham layout-shift hududlarini vizual tarzda ajratib ko‘rsatishi mumkin. (",[37,2452,2440],{"href":2453,"rel":2454},"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fdevtools\u002Fperformance\u002Freference?authuser=1&hl=en&utm_source=chatgpt.com",[41],[16,2456,2457],{},"Foydali workflow:",[16,2459,2460],{},[30,2461,2462],{},"Field CLS yomon → sahifani qayta yaratish → eng katta shift cluster’ni topish → siljigan elementlarni tekshirish → siljishga sabab bo‘lgan elementni aniqlash → tuzatish → qayta o‘lchash.",[16,2464,2465,2466,991],{},"Siljigan elementning o‘zi muammo sababi deb o‘ylamang. Masalan, paragraph uning yuqorisidagi reklama, rasm, banner yoki boshqa komponent o‘lchamini o‘zgartirgani uchun siljishi mumkin. (",[37,2467,1851],{"href":2220,"rel":2468},[41],[11,2470,2472],{"id":2471},"lab-cls-va-field-cls","Lab CLS va Field CLS",[16,2474,2475],{},"Debugging’da keng tarqalgan xatolardan biri — Lighthouse’dagi CLS bilan real foydalanuvchilardagi CLS aynan bir xil bo‘lishini kutish.",[16,2477,2478],{},"Ular turli holatlarni o‘lchaydi.",[16,2480,2481,2482,991],{},"Oddiy Lighthouse testi asosan sahifaning dastlabki yuklanishini kuzatadi. Real foydalanuvchilar esa scrolling qilishi, menyularni ochishi, qo‘shimcha mahsulotlarni yuklashi, route change’larni ishga tushirishi yoki sahifani bir necha daqiqa ochiq qoldirishi mumkin. Shu sababli keyinroq yuz beradigan kutilmagan siljishlar CrUX’da ko‘rinishi mumkin, oddiy Lighthouse load testi esa barqaror natija ko‘rsatishi mumkin. (",[37,2483,1851],{"href":2220,"rel":2484},[41],[16,2486,2487,2488,2491],{},"Agar lab CLS past, field CLS esa yuqori bo‘lsa, ",[30,2489,2490],{},"page load’dan keyingi interaction va scrolling behavior","’ni tekshiring.",[16,2493,2494],{},[164,2495,2496],{},"INTERNAL LINK: Lab Data vs Field Data",[11,2498,2500],{"id":2499},"cls-debugging","CLS debugging",[16,2502,2503],{},"Murakkab holatlarda Chromium Layout Instability API orqali layout shift’lar haqida ma’lumot beradi:",[154,2505,2510],{"className":2506,"code":2507,"language":2508,"meta":2509,"style":160},"language-js shiki shiki-themes github-light github-dark","new PerformanceObserver((entryList) => {\n  for (const entry of entryList.getEntries()) {\n    if (!entry.hadRecentInput) {\n      console.log('Layout shift:', entry.value, entry.sources);\n    }\n  }\n}).observe({\n  type: 'layout-shift',\n  buffered: true\n});\n","js","id=\"jsanm3\"",[84,2511,2512,2535,2560,2573,2589,2594,2599,2611,2623,2632],{"__ignoreMap":160},[164,2513,2514,2517,2520,2523,2527,2530,2533],{"class":166,"line":167},[164,2515,2516],{"class":2187},"new",[164,2518,2519],{"class":178}," PerformanceObserver",[164,2521,2522],{"class":170},"((",[164,2524,2526],{"class":2525},"s4XuR","entryList",[164,2528,2529],{"class":170},") ",[164,2531,2532],{"class":2187},"=>",[164,2534,2174],{"class":170},[164,2536,2537,2540,2542,2545,2548,2551,2554,2557],{"class":166,"line":197},[164,2538,2539],{"class":2187},"  for",[164,2541,1719],{"class":170},[164,2543,2544],{"class":2187},"const",[164,2546,2547],{"class":1350}," entry",[164,2549,2550],{"class":2187}," of",[164,2552,2553],{"class":170}," entryList.",[164,2555,2556],{"class":178},"getEntries",[164,2558,2559],{"class":170},"()) {\n",[164,2561,2562,2565,2567,2570],{"class":166,"line":1187},[164,2563,2564],{"class":2187},"    if",[164,2566,1719],{"class":170},[164,2568,2569],{"class":2187},"!",[164,2571,2572],{"class":170},"entry.hadRecentInput) {\n",[164,2574,2575,2578,2581,2583,2586],{"class":166,"line":1193},[164,2576,2577],{"class":170},"      console.",[164,2579,2580],{"class":178},"log",[164,2582,2364],{"class":170},[164,2584,2585],{"class":185},"'Layout shift:'",[164,2587,2588],{"class":170},", entry.value, entry.sources);\n",[164,2590,2591],{"class":166,"line":1199},[164,2592,2593],{"class":170},"    }\n",[164,2595,2596],{"class":166,"line":2153},[164,2597,2598],{"class":170},"  }\n",[164,2600,2602,2605,2608],{"class":166,"line":2601},7,[164,2603,2604],{"class":170},"}).",[164,2606,2607],{"class":178},"observe",[164,2609,2610],{"class":170},"({\n",[164,2612,2614,2617,2620],{"class":166,"line":2613},8,[164,2615,2616],{"class":170},"  type: ",[164,2618,2619],{"class":185},"'layout-shift'",[164,2621,2622],{"class":170},",\n",[164,2624,2626,2629],{"class":166,"line":2625},9,[164,2627,2628],{"class":170},"  buffered: ",[164,2630,2631],{"class":1350},"true\n",[164,2633,2635],{"class":166,"line":2634},10,[164,2636,2637],{"class":170},"});\n",[16,2639,2640,2641,2644,2645,991],{},"Bu individual shift’larni debugging qilish uchun foydali, lekin CLS metrikasining to‘liq implementatsiyasi emas. CLS’ni to‘g‘ri hisoblash uchun shift’larni session windows ichiga guruhlash va qo‘shimcha lifecycle holatlarini hisobga olish kerak. Production Real User Monitoring uchun to‘liq metrikani o‘zingiz qayta implementatsiya qilishdan ko‘ra ",[84,2642,2643],{},"web-vitals"," kutubxonasidan foydalanish odatda xavfsizroq. (",[37,2646,1851],{"href":1849,"rel":2647},[41],[11,2649,2651],{"id":2650},"keng-tarqalgan-notogri-tushunchalar","Keng tarqalgan noto‘g‘ri tushunchalar",[16,2653,2654,2657],{},[30,2655,2656],{},"“CLS yuklanish tezligini o‘lchaydi.”","\nYo‘q. CLS vizual barqarorlikni o‘lchaydi. Sahifa tez yuklanishi mumkin, lekin CLS juda yomon bo‘lishi mumkin.",[16,2659,2660,2663],{},[30,2661,2662],{},"“Har qanday siljish CLS’ni oshiradi.”","\nYo‘q. CLS kutilmagan layout shift’larni hisobga oladi. Foydalanuvchining aniq interaction’i bilan bevosita bog‘liq ayrim shift’lar hisobdan chiqariladi.",[16,2665,2666,2669],{},[30,2667,2668],{},"“Lighthouse’da CLS 0 bo‘lsa, foydalanuvchilarda ham CLS 0 bo‘ladi.”","\nShart emas. Post-load shift’lar field data’da ko‘rinishi mumkin, lekin oddiy synthetic page-load testida umuman yuz bermasligi mumkin.",[16,2671,2672,2675],{},[30,2673,2674],{},"“Siljigan element muammoning sababidir.”","\nHar doim ham emas. Uni boshqa element surib yuborgan bo‘lishi mumkin.",[11,2677,742],{"id":741},[16,2679,2680],{},"CLS’ga development tugagandan keyin yaxshilanadigan oddiy score sifatida emas, layout architecture muammosi sifatida qarang.",[16,2682,2683],{},"Media va third-party komponentlar uchun joyni ular yuklanishidan oldin ajrating. Asinxron UI’ni shunday loyihalangki, kontent yuklanishi mavjud elementlarni kutilmaganda siljitmasin. Sahifalarni faqat initial load vaqtida emas, real network sharoiti va foydalanuvchi flow’lari bilan ham test qiling.",[16,2685,2686,2687,2690,2691,2694],{},"Production saytlar uchun field monitoring va DevTools debugging’ni birga ishlating. Field data sizga ",[30,2688,2689],{},"real foydalanuvchilar beqarorlikka duch kelayotganini"," ko‘rsatadi; diagnostika vositalari esa ",[30,2692,2693],{},"nega bunday bo‘layotganini"," aniqlashga yordam beradi.",[11,2696,759],{"id":758},[2028,2698,2700],{"id":2699},"cls-core-web-vitals-tarkibiga-kiradimi","CLS Core Web Vitals tarkibiga kiradimi?",[16,2702,2703,2704,991],{},"Ha. CLS — vizual barqarorlikni o‘lchaydigan Core Web Vital. Qolgan amaldagi Core Web Vitals — loading performance uchun LCP va responsiveness uchun INP. (",[37,2705,1966],{"href":1964,"rel":2706},[41],[2028,2708,2710],{"id":2709},"qanday-cls-yaxshi-hisoblanadi","Qanday CLS yaxshi hisoblanadi?",[16,2712,2713,2714,2717,2718,991],{},"Sahifa tashriflarining ",[30,2715,2716],{},"75-percentilida 0.10 yoki undan past CLS"," yaxshi hisoblanadi. (",[37,2719,1851],{"href":1849,"rel":2720},[41],[2028,2722,2724],{"id":2723},"cls-soniyalarda-olchanadimi","CLS soniyalarda o‘lchanadimi?",[16,2726,2727],{},"Yo‘q. CLS o‘lchov birligisiz score hisoblanadi.",[2028,2729,2731],{"id":2730},"lazy-loading-clsni-yomonlashtirishi-mumkinmi","Lazy loading CLS’ni yomonlashtirishi mumkinmi?",[16,2733,2734],{},"Lazy loading’ning o‘zi muammo bo‘lishi shart emas. CLS lazy-loaded kontent uchun oldindan yetarli joy ajratilmaganida yuz beradi.",[2028,2736,2738],{"id":2737},"cls-sahifa-yuklangandan-keyin-ham-yuz-berishi-mumkinmi","CLS sahifa yuklangandan keyin ham yuz berishi mumkinmi?",[16,2740,2741,2742,991],{},"Ha. Kutilmagan shift’lar scrolling, dynamic content update, SPA transition yoki boshqa post-load holatlarida ham yuz berishi mumkin. Shu sababli field CLS Lighthouse CLS’dan yuqori bo‘lishi mumkin. (",[37,2743,1851],{"href":2220,"rel":2744},[41],[11,2746,826],{"id":825},[16,2748,2749,2750],{},"CLS oddiy savolga javob beradi: ",[30,2751,2752],{},"sahifa foydalanuvchi kutgan joyida qoladimi?",[16,2754,2755],{},"Yaxshi CLS uchun sahifani butunlay statik qilish shart emas. Zamonaviy interfeyslar kontentni dinamik yuklashi, elementlarni animatsiya qilishi va foydalanuvchi harakatlariga javob berishi mumkin. Asosiy tamoyil — oldindan bashorat qilinadigan xatti-harakat: kontent kelishidan oldin joy ajrating, mavjud kontentni kutilmaganda siljitmang va natijani real foydalanuvchi ma’lumotlari bilan tekshiring.",[16,2757,2758],{},"Layout boshidan barqaror qilib qurilsa, yaxshi CLS odatda tabiiy natija bo‘ladi.",[11,2760,836],{"id":835},[838,2762,2763,2776,2789,2803,2815,2831],{},[841,2764,2765,2766,2768,2769,1719,2773,991],{},"web.dev — ",[30,2767,1842],{},". Last updated April 12, 2023. ",[37,2770,1842],{"href":2771,"rel":2772},"https:\u002F\u002Fweb.dev\u002Farticles\u002Fcls?utm_source=chatgpt.com",[41],[37,2774,1851],{"href":1849,"rel":2775},[41],[841,2777,2765,2778,2781,2782,1719,2786,991],{},[30,2779,2780],{},"Optimize Cumulative Layout Shift",". Published May 5, 2020; updated February 7, 2025. ",[37,2783,2780],{"href":2784,"rel":2785},"https:\u002F\u002Fweb.dev\u002Farticles\u002Foptimize-cls?utm_source=chatgpt.com",[41],[37,2787,1851],{"href":2220,"rel":2788},[41],[841,2790,2765,2791,2794,2795,1719,2799,991],{},[30,2792,2793],{},"Debug layout shifts",". Published March 11, 2021; updated February 7, 2025. ",[37,2796,2793],{"href":2797,"rel":2798},"https:\u002F\u002Fweb.dev\u002Farticles\u002Fdebug-layout-shifts?utm_source=chatgpt.com",[41],[37,2800,1851],{"href":2801,"rel":2802},"https:\u002F\u002Fweb.dev\u002Farticles\u002Fdebug-layout-shifts",[41],[841,2804,843,2805,2807,2808,1719,2812,991],{},[30,2806,899],{},". Last updated December 10, 2025. ",[37,2809,2811],{"href":710,"rel":2810},[41],"Google Search Central Core Web Vitals documentation",[37,2813,1966],{"href":1964,"rel":2814},[41],[841,2816,2817,2818,2821,2822,1719,2827,991],{},"Chrome for Developers — ",[30,2819,2820],{},"Chrome UX Report: Metrics",". Published June 23, 2022; updated September 15, 2026. ",[37,2823,2826],{"href":2824,"rel":2825},"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fcrux\u002Fmethodology\u002Fmetrics?utm_source=chatgpt.com",[41],"Chrome UX Report Metrics",[37,2828,2440],{"href":2829,"rel":2830},"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fcrux\u002Fmethodology\u002Fmetrics?authuser=804924846",[41],[841,2832,2817,2833,2836,2837,1719,2842,991],{},[30,2834,2835],{},"Performance features reference",". ",[37,2838,2841],{"href":2839,"rel":2840},"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fdevtools\u002Fperformance\u002Freference?utm_source=chatgpt.com",[41],"Chrome DevTools Performance reference",[37,2843,2440],{"href":2453,"rel":2844},[41],[915,2846,2847],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":160,"searchDepth":197,"depth":197,"links":2849},[2850,2851,2852,2853,2854,2857,2858,2865,2866,2867,2868,2869,2870,2877,2878],{"id":1835,"depth":197,"text":1836},{"id":1854,"depth":197,"text":1855},{"id":1879,"depth":197,"text":1880},{"id":1944,"depth":197,"text":1945},{"id":1974,"depth":197,"text":1975,"children":2855},[2856],{"id":2030,"depth":1187,"text":2031},{"id":2056,"depth":197,"text":2057},{"id":2083,"depth":197,"text":2084,"children":2859},[2860,2861,2862,2863,2864],{"id":2090,"depth":1187,"text":2091},{"id":2224,"depth":1187,"text":2225},{"id":2281,"depth":1187,"text":2282},{"id":2291,"depth":1187,"text":2292},{"id":2321,"depth":1187,"text":2322},{"id":2424,"depth":197,"text":2425},{"id":2471,"depth":197,"text":2472},{"id":2499,"depth":197,"text":2500},{"id":2650,"depth":197,"text":2651},{"id":741,"depth":197,"text":742},{"id":758,"depth":197,"text":759,"children":2871},[2872,2873,2874,2875,2876],{"id":2699,"depth":1187,"text":2700},{"id":2709,"depth":1187,"text":2710},{"id":2723,"depth":1187,"text":2724},{"id":2730,"depth":1187,"text":2731},{"id":2737,"depth":1187,"text":2738},{"id":825,"depth":197,"text":826},{"id":835,"depth":197,"text":836},"Tezlik","Cumulative Layout Shift (CLS) nimani o‘lchashi, score qanday ishlashi, layout shift’lar nimadan kelib chiqishi va CLS’ni qanday aniqlash hamda yaxshilashni o‘rganing.","\u002Fcls-defination.png","CLS rasmi ",{},"\u002Fblog\u002Fuz\u002Fcls-tushunchasi",{"title":1830,"description":2880},"cls-tushunchasi","blog\u002Fuz\u002Fcls-tushunchasi","cls-explained","U8k18OfM5RNxrkxD2s9b5cMVK8VfvzjqYvGqiLOicCk",{"id":2891,"title":2892,"author":6,"body":2893,"category":4104,"description":4105,"draft":939,"extension":940,"featured":941,"image":4106,"imageAlt":4107,"locale":944,"meta":4108,"navigation":941,"path":4109,"publishedAt":1822,"seo":4110,"slug":4111,"stem":4112,"translationKey":4113,"updatedAt":1822,"__hash__":4114},"blog\u002Fblog\u002Fuz\u002Fdoker-production.md","Production web-ilovalar uchun Docker: amaliy qo‘llanma",{"type":8,"value":2894,"toc":4082},[2895,2899,2906,2909,2911,2914,2917,2921,3013,3017,3020,3028,3031,3222,3225,3236,3240,3243,3252,3255,3258,3267,3273,3278,3282,3285,3299,3310,3313,3317,3320,3331,3334,3361,3368,3374,3378,3385,3388,3444,3447,3450,3454,3461,3464,3471,3474,3479,3484,3487,3492,3496,3499,3520,3527,3538,3541,3556,3573,3576,3580,3583,3585,3606,3613,3616,3636,3639,3644,3648,3663,3666,3677,3680,3684,3687,3848,3867,3871,3878,3885,3889,3892,3895,3898,3903,3905,3908,3911,3916,3919,3922,3924,3928,3931,3935,3943,3950,3956,3960,3963,3970,3973,3977,3980,3983,3985,4079],[11,2896,2898],{"id":2897},"production-web-ilovalar-uchun-docker","Production web-ilovalar uchun Docker",[16,2900,2901,2902,2905],{},"Docker production web-ilovalarni ishonchli ishga tushirish uchun mos, lekin faqat ",[84,2903,2904],{},"docker compose up -d"," buyrug‘ini bajarishning o‘zi production strategiya hisoblanmaydi. Asosiy qiyinchilik containerlarni ishga tushirishda emas. Muhimi, ularni oldindan aniq natija bilan qayta build qilish, nosozliklardan keyin tiklash, ortiqcha privilege bermaslik, muhim ma’lumotlarni saqlash, resurslardan belgilangan chegarada foydalanish, foydali loglar yaratish va deploy vaqtida xavfsiz almashtirish imkonini yaratishdir.",[16,2907,2908],{},"Bitta serverda ishlaydigan kichik yoki o‘rta hajmdagi web-ilova uchun Docker Compose production deployment modeli sifatida mutlaqo maqbul bo‘lishi mumkin. Docker Compose’ning single-host production deployment uchun ishlatilishini rasmiy hujjatlarda ham ko‘rsatadi. Ammo infratuzilma bir nechta serverga kengaysa, container scheduling, failover, service discovery, rolling deployment va orchestration alohida arxitektura masalalariga aylanadi.",[11,2910,25],{"id":24},[16,2912,2913],{},"Docker production uchun mos, agar containerlarga kichik server sifatida emas, istalgan payt almashtirilishi mumkin bo‘lgan runtime birliklari sifatida qaralsa. Immutable image’lar yarating, ilovani faqat zarur privilege bilan ishga tushiring, state’ni container layer’dan tashqarida saqlang, health check va restart siyosatini sozlang, CPU va memory uchun limit belgilang, loglarni rotate qiling yoki tashqi tizimga yuboring, secret’larni himoyalang, faqat kerakli portlarni oching va backup hamda deployment jarayonlarini oldindan sinab qo‘ying.",[16,2915,2916],{},"Docker bu imkoniyatlarning aksariyatini beradi. Production’dagi ishonchlilik esa ularning qanchalik to‘g‘ri sozlanganiga bog‘liq.",[11,2918,2920],{"id":2919},"production-uchun-asosiy-talablar","Production uchun asosiy talablar",[48,2922,2923,2932],{},[51,2924,2925],{},[54,2926,2927,2929],{},[57,2928,59],{},[57,2930,2931],{},"Production talabi",[64,2933,2934,2942,2950,2958,2965,2973,2981,2989,2997,3005],{},[54,2935,2936,2939],{},[69,2937,2938],{},"Image’lar",[69,2940,2941],{},"Qayta ishlab bo‘ladigan, minimal va test qilingan",[54,2943,2944,2947],{},[69,2945,2946],{},"Ilova",[69,2948,2949],{},"Amaliy jihatdan mumkin bo‘lgan joylarda stateless",[54,2951,2952,2955],{},[69,2953,2954],{},"Xavfsizlik",[69,2956,2957],{},"Non-root, least privilege, Docker access nazorati",[54,2959,2960,2962],{},[69,2961,641],{},[69,2963,2964],{},"CPU va memory limitlari",[54,2966,2967,2970],{},[69,2968,2969],{},"Tarmoq",[69,2971,2972],{},"Faqat zarur portlar ochilgan",[54,2974,2975,2978],{},[69,2976,2977],{},"State",[69,2979,2980],{},"Persistent volumes yoki tashqi managed service’lar",[54,2982,2983,2986],{},[69,2984,2985],{},"Ishonchlilik",[69,2987,2988],{},"Health check va restart policy",[54,2990,2991,2994],{},[69,2992,2993],{},"Loglar",[69,2995,2996],{},"Rotation yoki tashqi aggregation",[54,2998,2999,3002],{},[69,3000,3001],{},"Secret’lar",[69,3003,3004],{},"Image layer’laridan tashqarida saqlanadi",[54,3006,3007,3010],{},[69,3008,3009],{},"Deployment",[69,3011,3012],{},"Takrorlanadigan build, deploy va rollback jarayoni",[11,3014,3016],{"id":3015},"production-imagelarni-togri-build-qiling","Production image’larni to‘g‘ri build qiling",[16,3018,3019],{},"Production image ilovani ishga tushirish uchun kerak bo‘lgan narsalarni o‘z ichiga olishi kerak, build jarayoni uchun ishlatilgan barcha vositalarni emas.",[16,3021,3022,3023,991],{},"Docker compiler, development dependency va build tool’larni final runtime image’dan ajratish uchun multi-stage build’dan foydalanishni tavsiya qiladi. Kichikroq runtime image’larda odatda ortiqcha dependency kamroq bo‘ladi va attack surface ham qisqaradi. Docker, shuningdek, ishonchli va minimal base image’lardan foydalanishni hamda dependency yangilanishlari image’ga kirishi uchun ularni vaqti-vaqti bilan qayta build qilishni tavsiya qiladi. (",[37,3024,3027],{"href":3025,"rel":3026},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fbuilding\u002Fbest-practices\u002F?utm_source=chatgpt.com",[41],"docs.docker.com",[16,3029,3030],{},"Oddiy namuna quyidagicha:",[154,3032,3036],{"className":3033,"code":3034,"language":3035,"meta":160,"style":160},"language-dockerfile shiki shiki-themes github-light github-dark","# syntax=docker\u002Fdockerfile:1\n\nFROM node:24-alpine AS build\n\nWORKDIR \u002Fapp\n\nCOPY package*.json .\u002F\nRUN npm ci\n\nCOPY . .\nRUN npm run build\n\n\nFROM node:24-alpine AS runtime\n\nWORKDIR \u002Fapp\n\nENV NODE_ENV=production\n\nCOPY package*.json .\u002F\nRUN npm ci --omit=dev && npm cache clean --force\n\nCOPY --from=build \u002Fapp\u002Fdist .\u002Fdist\n\nUSER node\n\nEXPOSE 3000\n\nHEALTHCHECK --interval=30s \\\n  --timeout=3s \\\n  --start-period=10s \\\n  --retries=3 \\\n  CMD wget -qO- http:\u002F\u002F127.0.0.1:3000\u002Fhealth || exit 1\n\nCMD [\"node\", \"dist\u002Fserver.js\"]\n","dockerfile",[84,3037,3038,3043,3047,3052,3056,3061,3065,3070,3075,3079,3084,3090,3095,3100,3106,3111,3116,3121,3127,3132,3137,3143,3148,3154,3159,3165,3170,3176,3181,3187,3193,3199,3205,3211,3216],{"__ignoreMap":160},[164,3039,3040],{"class":166,"line":167},[164,3041,3042],{},"# syntax=docker\u002Fdockerfile:1\n",[164,3044,3045],{"class":166,"line":197},[164,3046,1190],{"emptyLinePlaceholder":941},[164,3048,3049],{"class":166,"line":1187},[164,3050,3051],{},"FROM node:24-alpine AS build\n",[164,3053,3054],{"class":166,"line":1193},[164,3055,1190],{"emptyLinePlaceholder":941},[164,3057,3058],{"class":166,"line":1199},[164,3059,3060],{},"WORKDIR \u002Fapp\n",[164,3062,3063],{"class":166,"line":2153},[164,3064,1190],{"emptyLinePlaceholder":941},[164,3066,3067],{"class":166,"line":2601},[164,3068,3069],{},"COPY package*.json .\u002F\n",[164,3071,3072],{"class":166,"line":2613},[164,3073,3074],{},"RUN npm ci\n",[164,3076,3077],{"class":166,"line":2625},[164,3078,1190],{"emptyLinePlaceholder":941},[164,3080,3081],{"class":166,"line":2634},[164,3082,3083],{},"COPY . .\n",[164,3085,3087],{"class":166,"line":3086},11,[164,3088,3089],{},"RUN npm run build\n",[164,3091,3093],{"class":166,"line":3092},12,[164,3094,1190],{"emptyLinePlaceholder":941},[164,3096,3098],{"class":166,"line":3097},13,[164,3099,1190],{"emptyLinePlaceholder":941},[164,3101,3103],{"class":166,"line":3102},14,[164,3104,3105],{},"FROM node:24-alpine AS runtime\n",[164,3107,3109],{"class":166,"line":3108},15,[164,3110,1190],{"emptyLinePlaceholder":941},[164,3112,3114],{"class":166,"line":3113},16,[164,3115,3060],{},[164,3117,3119],{"class":166,"line":3118},17,[164,3120,1190],{"emptyLinePlaceholder":941},[164,3122,3124],{"class":166,"line":3123},18,[164,3125,3126],{},"ENV NODE_ENV=production\n",[164,3128,3130],{"class":166,"line":3129},19,[164,3131,1190],{"emptyLinePlaceholder":941},[164,3133,3135],{"class":166,"line":3134},20,[164,3136,3069],{},[164,3138,3140],{"class":166,"line":3139},21,[164,3141,3142],{},"RUN npm ci --omit=dev && npm cache clean --force\n",[164,3144,3146],{"class":166,"line":3145},22,[164,3147,1190],{"emptyLinePlaceholder":941},[164,3149,3151],{"class":166,"line":3150},23,[164,3152,3153],{},"COPY --from=build \u002Fapp\u002Fdist .\u002Fdist\n",[164,3155,3157],{"class":166,"line":3156},24,[164,3158,1190],{"emptyLinePlaceholder":941},[164,3160,3162],{"class":166,"line":3161},25,[164,3163,3164],{},"USER node\n",[164,3166,3168],{"class":166,"line":3167},26,[164,3169,1190],{"emptyLinePlaceholder":941},[164,3171,3173],{"class":166,"line":3172},27,[164,3174,3175],{},"EXPOSE 3000\n",[164,3177,3179],{"class":166,"line":3178},28,[164,3180,1190],{"emptyLinePlaceholder":941},[164,3182,3184],{"class":166,"line":3183},29,[164,3185,3186],{},"HEALTHCHECK --interval=30s \\\n",[164,3188,3190],{"class":166,"line":3189},30,[164,3191,3192],{},"  --timeout=3s \\\n",[164,3194,3196],{"class":166,"line":3195},31,[164,3197,3198],{},"  --start-period=10s \\\n",[164,3200,3202],{"class":166,"line":3201},32,[164,3203,3204],{},"  --retries=3 \\\n",[164,3206,3208],{"class":166,"line":3207},33,[164,3209,3210],{},"  CMD wget -qO- http:\u002F\u002F127.0.0.1:3000\u002Fhealth || exit 1\n",[164,3212,3214],{"class":166,"line":3213},34,[164,3215,1190],{"emptyLinePlaceholder":941},[164,3217,3219],{"class":166,"line":3218},35,[164,3220,3221],{},"CMD [\"node\", \"dist\u002Fserver.js\"]\n",[16,3223,3224],{},"Bu universal Dockerfile emas, balki Node.js uchun misol. Muhim jihat — build va runtime bosqichlarini ajratish, faqat production dependency’larni o‘rnatish, ilovani non-root user bilan ishga tushirish va application-level health endpoint ishlatish.",[16,3226,3227,3228,3231,3232,991],{},"Agar service uchun root privilege kerak bo‘lmasa, Docker ",[84,3229,3230],{},"USER"," ishlatishni tavsiya qiladi. (",[37,3233,3027],{"href":3234,"rel":3235},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fbuilding\u002Fbest-practices\u002F",[41],[2028,3237,3239],{"id":3238},"imagelarni-pin-qilish","Image’larni pin qilish",[16,3241,3242],{},"Image tag’lari o‘zgaruvchan bo‘ladi. Masalan:",[154,3244,3246],{"className":3033,"code":3245,"language":3035,"meta":160,"style":160},"FROM alpine:3.21\n",[84,3247,3248],{"__ignoreMap":160},[164,3249,3250],{"class":166,"line":167},[164,3251,3245],{},[16,3253,3254],{},"publisher yangi update chiqarganidan keyin boshqa underlying image’ga resolve bo‘lishi mumkin.",[16,3256,3257],{},"Docker image’ni digest orqali pin qilishni qo‘llab-quvvatlaydi:",[154,3259,3261],{"className":3033,"code":3260,"language":3035,"meta":160,"style":160},"FROM alpine:3.21@sha256:...\n",[84,3262,3263],{"__ignoreMap":160},[164,3264,3265],{"class":166,"line":167},[164,3266,3260],{},[16,3268,3269,3270,991],{},"Bu reproducibility’ni yaxshilaydi, chunki bir xil digest har doim bir xil image content’ni bildiradi. Lekin muhim tradeoff bor: digest bilan qat’iy pin qilingan image avtomatik yangilanmaydi. Yaxshi production jarayon controlled pinning bilan automated dependency update tekshiruvlarini birlashtiradi; eski image’ni cheksiz vaqt muzlatib qo‘yish to‘g‘ri emas. (",[37,3271,3027],{"href":3234,"rel":3272},[41],[16,3274,3275],{},[164,3276,3277],{},"INTERNAL LINK: How Docker Images and Layers Work",[11,3279,3281],{"id":3280},"secretlarni-image-ichiga-joylamang","Secret’larni image ichiga joylamang",[16,3283,3284],{},"Password, private token va credential’lar image ichiga yozib qo‘yilmasligi kerak.",[16,3286,3287,3288,1250,3291,3294,3295,991],{},"Docker build secret’lar uchun Dockerfile’dagi ",[84,3289,3290],{},"ARG",[84,3292,3293],{},"ENV"," dan foydalanmaslik haqida alohida ogohlantiradi, chunki bu qiymatlar final image yoki uning metadata’sida saqlanib qolishi mumkin. BuildKit secret mounts credential’larni build vaqtida vaqtincha taqdim etadi va final image ichida saqlamaydi. (",[37,3296,3027],{"href":3297,"rel":3298},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fbuild-checks\u002Fsecrets-used-in-arg-or-env\u002F?utm_source=chatgpt.com",[41],[16,3300,3301,3302,3305,3306,991],{},"Docker Compose runtime secrets’ni ham qo‘llab-quvvatlaydi. Linux container’larda ular ",[84,3303,3304],{},"\u002Frun\u002Fsecrets\u002F"," ichiga file sifatida mount qilinishi va faqat shu secret kerak bo‘lgan service’largagina berilishi mumkin. (",[37,3307,3027],{"href":3308,"rel":3309},"https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Fhow-tos\u002Fuse-secrets\u002F?utm_source=chatgpt.com",[41],[16,3311,3312],{},"Asosiy prinsip oddiy: configuration environment’lar o‘rtasida o‘zgarishi mumkin, lekin application image o‘sha environment credential’larini o‘z ichiga olishi shart emas.",[11,3314,3316],{"id":3315},"container-privilegelarini-cheklang","Container privilege’larini cheklang",[16,3318,3319],{},"Container isolation beradi, lekin bu host security’ni e’tiborsiz qoldirish mumkin degani emas.",[16,3321,3322,3323,3326,3327,991],{},"Docker daemon’ga access ayniqsa muhim. Docker hujjatlarida odatiy rootful Docker daemon’ni boshqara oladigan user host’da amalda root darajasidagi imkoniyatlarga ega bo‘lishi mumkinligi aytiladi. Shu sababli ",[84,3324,3325],{},"docker"," group’iga a’zolik privileged access sifatida ko‘rilishi kerak. (",[37,3328,3027],{"href":3329,"rel":3330},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fsecurity\u002F?utm_source=chatgpt.com",[41],[16,3332,3333],{},"Web-ilovalar uchun:",[3335,3336,3337,3340,3346,3349,3352,3358],"ul",{},[841,3338,3339],{},"imkon bo‘lsa ilovani non-root user bilan ishga tushiring;",[841,3341,3342,3345],{},[84,3343,3344],{},"privileged: true"," dan saqlaning;",[841,3347,3348],{},"ilovaga kerak bo‘lmagan capability’larni olib tashlang;",[841,3350,3351],{},"o‘zgartirish uchun aniq va tushunarli sabab bo‘lmasa, Docker’ning default seccomp himoyasini saqlang;",[841,3353,3354,3357],{},[84,3355,3356],{},"no-new-privileges"," ni ko‘rib chiqing;",[841,3359,3360],{},"operatsion cheklovlari sizga mos bo‘lsa, Rootless Docker’dan foydalanishni ko‘rib chiqing.",[16,3362,3363,3364,991],{},"Docker’dagi rootless mode daemon va containerlarni root privilege’siz ishga tushiradi va ayrim daemon yoki runtime vulnerability’larining ta’sirini kamaytiradi. (",[37,3365,3027],{"href":3366,"rel":3367},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fsecurity\u002Frootless\u002F?utm_source=chatgpt.com",[41],[16,3369,3370,3371,991],{},"Docker keng privilege berish o‘rniga kerak bo‘lmagan Linux capability’larni olib tashlashni ham tavsiya qiladi. (",[37,3372,3027],{"href":3329,"rel":3373},[41],[11,3375,3377],{"id":3376},"cpu-va-memoryni-cheklang","CPU va memory’ni cheklang",[16,3379,3380,3381,991],{},"Container default holatda resource limit’ga ega emas. Limit qo‘yilmasa, u host imkon berganicha CPU yoki memory ishlatishi mumkin. Shu sababli noto‘g‘ri ishlayotgan bitta container bir xil serverdagi boshqa containerlarga ham ta’sir qilishi mumkin. (",[37,3382,3027],{"href":3383,"rel":3384},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fcontainers\u002Fresource_constraints\u002F?utm_source=chatgpt.com",[41],[16,3386,3387],{},"Compose quyidagi kabi limitlarni qo‘llab-quvvatlaydi:",[154,3389,3393],{"className":3390,"code":3391,"language":3392,"meta":160,"style":160},"language-yaml shiki shiki-themes github-light github-dark","services:\n  app:\n    image: registry.example.com\u002Fapp:1.4.0\n\n    cpus: 1.0\n    mem_limit: 512m\n","yaml",[84,3394,3395,3403,3410,3420,3424,3434],{"__ignoreMap":160},[164,3396,3397,3400],{"class":166,"line":167},[164,3398,3399],{"class":174},"services",[164,3401,3402],{"class":170},":\n",[164,3404,3405,3408],{"class":166,"line":197},[164,3406,3407],{"class":174},"  app",[164,3409,3402],{"class":170},[164,3411,3412,3415,3417],{"class":166,"line":1187},[164,3413,3414],{"class":174},"    image",[164,3416,2181],{"class":170},[164,3418,3419],{"class":185},"registry.example.com\u002Fapp:1.4.0\n",[164,3421,3422],{"class":166,"line":1193},[164,3423,1190],{"emptyLinePlaceholder":941},[164,3425,3426,3429,3431],{"class":166,"line":1199},[164,3427,3428],{"class":174},"    cpus",[164,3430,2181],{"class":170},[164,3432,3433],{"class":1350},"1.0\n",[164,3435,3436,3439,3441],{"class":166,"line":2153},[164,3437,3438],{"class":174},"    mem_limit",[164,3440,2181],{"class":170},[164,3442,3443],{"class":185},"512m\n",[16,3445,3446],{},"Bu qiymatlarni ko‘r-ko‘rona ko‘chirmang. Avval normal workload, kutilayotgan traffic, runtime memory behavior va failure condition’larni o‘lchang. PHP-FPM service, JVM ilovasi, Node.js process va PostgreSQL server’ining talab qiladigan limitlari keskin farq qilishi mumkin.",[16,3448,3449],{},"Limitlarning maqsadi har bir container’ni shunchaki kamroq memory ishlatishga majburlash emas, balki isolation va failure holatlarida oldindan tushunarli behavior yaratishdir.",[11,3451,3453],{"id":3452},"muhim-malumotlarni-alohida-saqlang","Muhim ma’lumotlarni alohida saqlang",[16,3455,3456,3457,991],{},"Container’ning writable filesystem’i vaqtinchalik. Container o‘chirilsa, faqat writable layer ichida turgan ma’lumotlar ham yo‘qoladi. (",[37,3458,3027],{"href":3459,"rel":3460},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fstorage?utm_source=chatgpt.com",[41],[16,3462,3463],{},"Ilovaning persistent data’si Docker volumes, mos bind mount, object storage yoki tashqi database\u002Fstorage service’da saqlanishi kerak.",[16,3465,3466,3467,991],{},"Docker ko‘plab holatlarda persistent container data uchun volume’larni afzal mexanizm sifatida ko‘rsatadi. Volume ma’lum bir container’dan mustaqil yashaydi va uni backup qilish, restore qilish hamda migrate qilish mumkin. (",[37,3468,3027],{"href":3469,"rel":3470},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fstorage\u002Fvolumes\u002F?utm_source=chatgpt.com",[41],[16,3472,3473],{},"Bu muhim arxitektura ajratishini beradi:",[16,3475,3476],{},[30,3477,3478],{},"Container = almashtiriladigan application runtime",[16,3480,3481],{},[30,3482,3483],{},"Volume yoki tashqi service = persistent state",[16,3485,3486],{},"Volume’ning o‘zi backup emas. Production tizimlarga baribir rejalashtirilgan backup va undan ham muhimi, sinovdan o‘tgan restore jarayoni kerak bo‘ladi.",[16,3488,3489],{},[164,3490,3491],{},"INTERNAL LINK: Docker Volumes Explained",[11,3493,3495],{"id":3494},"health-check-va-tiklanish","Health check va tiklanish",[16,3497,3498],{},"Process ishlab turgan bo‘lsa ham, ilovaning o‘zi ishlamayotgan bo‘lishi mumkin.",[16,3500,3501,3502,3505,3506,698,3509,586,3512,3515,3516,991],{},"Docker’dagi ",[84,3503,3504],{},"HEALTHCHECK"," instruction image ichida ilovaning haqiqatan ishlayotganini tekshiradigan command belgilash imkonini beradi. Keyin Docker ",[84,3507,3508],{},"starting",[84,3510,3511],{},"healthy",[84,3513,3514],{},"unhealthy"," kabi state’larni ko‘rsatadi. (",[37,3517,3027],{"href":3518,"rel":3519},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fdockerfile?utm_source=chatgpt.com",[41],[16,3521,3522,3523,3526],{},"Web service uchun ",[84,3524,3525],{},"\u002Fhealth"," endpoint HTTP application request’larga javob bera olishini tekshirishi mumkin. Murakkabroq readiness check’lar dependency’larni ham tekshirishi mumkin, lekin health endpoint haddan tashqari murakkab bo‘lmasligi kerak. Aks holda tashqi service’dagi vaqtinchalik muammo keraksiz restart loop’larni keltirib chiqarishi mumkin.",[16,3528,3529,3530,3533,3534,991],{},"Compose boshqa service’ni ishga tushirishdan oldin dependency ",[84,3531,3532],{},"service_healthy"," holatiga kelishini ham kutishi mumkin. (",[37,3535,3027],{"href":3536,"rel":3537},"https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Fhow-tos\u002Fstartup-order\u002F?utm_source=chatgpt.com",[41],[16,3539,3540],{},"Restart policy esa boshqa, lekin bog‘liq masalani hal qiladi:",[154,3542,3544],{"className":3390,"code":3543,"language":3392,"meta":160,"style":160},"restart: unless-stopped\n",[84,3545,3546],{"__ignoreMap":160},[164,3547,3548,3551,3553],{"class":166,"line":167},[164,3549,3550],{"class":174},"restart",[164,3552,2181],{"class":170},[164,3554,3555],{"class":185},"unless-stopped\n",[16,3557,3558,3559,698,3562,586,3565,3568,3569,991],{},"Docker container exit qilganda yoki daemon restart bo‘lganda avtomatik qayta ishga tushirish uchun ",[84,3560,3561],{},"always",[84,3563,3564],{},"unless-stopped",[84,3566,3567],{},"on-failure"," policy’larini hujjatlashtiradi. (",[37,3570,3027],{"href":3571,"rel":3572},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fcontainers\u002Fstart-containers-automatically\u002F?utm_source=chatgpt.com",[41],[16,3574,3575],{},"Restart policy process failure’dan keyin tiklanishga yordam beradi. Lekin u monitoring o‘rnini bosmaydi va doimiy crash bo‘layotgan ilovani tuzatmaydi.",[11,3577,3579],{"id":3578},"network-exposureni-nazorat-qiling","Network exposure’ni nazorat qiling",[16,3581,3582],{},"Docker port’larini publish qilishga ehtiyotkor yondashish kerak.",[16,3584,1265],{},[154,3586,3588],{"className":1337,"code":3587,"language":1339,"meta":160,"style":160},"docker run -p 3000:3000 myapp\n",[84,3589,3590],{"__ignoreMap":160},[164,3591,3592,3594,3597,3600,3603],{"class":166,"line":167},[164,3593,3325],{"class":178},[164,3595,3596],{"class":185}," run",[164,3598,3599],{"class":1350}," -p",[164,3601,3602],{"class":185}," 3000:3000",[164,3604,3605],{"class":185}," myapp\n",[16,3607,3608,3609,991],{},"default holatda port’ni host’dagi barcha interface’larda publish qiladi. Docker hujjatlari bunday portlar tashqaridan ochilib qolishi mumkinligini aniq ko‘rsatadi. (",[37,3610,3027],{"href":3611,"rel":3612},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002Fcontainer\u002Frun?utm_source=chatgpt.com",[41],[16,3614,3615],{},"Agar application’ga faqat shu serverdagi reverse proxy murojaat qilishi kerak bo‘lsa, loopback interface’ga bind qilish keraksiz tashqi exposure’ni kamaytiradi:",[154,3617,3619],{"className":3390,"code":3618,"language":3392,"meta":160,"style":160},"ports:\n  - \"127.0.0.1:3000:3000\"\n",[84,3620,3621,3628],{"__ignoreMap":160},[164,3622,3623,3626],{"class":166,"line":167},[164,3624,3625],{"class":174},"ports",[164,3627,3402],{"class":170},[164,3629,3630,3633],{"class":166,"line":197},[164,3631,3632],{"class":170},"  - ",[164,3634,3635],{"class":185},"\"127.0.0.1:3000:3000\"\n",[16,3637,3638],{},"Database, Redis va ichki queue’lar faqat Docker’da ishlayotgani uchun public qilib ochilmasligi kerak.",[16,3640,3641],{},[164,3642,3643],{},"INTERNAL LINK: Reverse Proxy Architecture Explained",[11,3645,3647],{"id":3646},"loglarni-etiborsiz-qoldirmang","Loglarni e’tiborsiz qoldirmang",[16,3649,3650,3651,3654,3655,3658,3659,991],{},"Docker’ning default ",[84,3652,3653],{},"json-file"," logging driver’i default holatda log rotation qilmaydi. Ko‘p log chiqaradigan ilova vaqt o‘tishi bilan diskda katta hajm egallashi mumkin. Docker disk to‘lib qolishi xavfini kamaytirish uchun ",[84,3656,3657],{},"local"," logging driver’ni ko‘rib chiqishni tavsiya qiladi. (",[37,3660,3027],{"href":3661,"rel":3662},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Flogging\u002Fconfigure\u002F?utm_source=chatgpt.com",[41],[16,3664,3665],{},"Production muhitida quyidagi variantlardan biri ongli ravishda tanlanishi kerak:",[3335,3667,3668,3671,3674],{},[841,3669,3670],{},"rotation bilan local loglar;",[841,3672,3673],{},"loglarni boshqa tizimga yuboradigan logging driver;",[841,3675,3676],{},"tashqi observability system.",[16,3678,3679],{},"Qaysi variant tanlanishidan qat’i nazar, loglar muammolarni tekshirish uchun yetarlicha vaqt saqlanishi kerak, lekin server diskini asta-sekin to‘ldirib yuboradigan darajada nazoratsiz qolmasligi kerak.",[11,3681,3683],{"id":3682},"amaliy-compose-bazasi","Amaliy Compose bazasi",[16,3685,3686],{},"Himoyasi kuchaytirilgan application service taxminan quyidagicha boshlanishi mumkin:",[154,3688,3690],{"className":3390,"code":3689,"language":3392,"meta":160,"style":160},"services:\n  app:\n    image: registry.example.com\u002Fmyapp:1.4.0\n    restart: unless-stopped\n\n    ports:\n      - \"127.0.0.1:3000:3000\"\n\n    cpus: 1.0\n    mem_limit: 512m\n\n    read_only: true\n\n    tmpfs:\n      - \u002Ftmp\n\n    security_opt:\n      - no-new-privileges:true\n\n    cap_drop:\n      - ALL\n\n    logging:\n      driver: local\n",[84,3691,3692,3698,3704,3713,3722,3726,3733,3740,3744,3752,3760,3764,3773,3777,3784,3791,3795,3802,3809,3813,3820,3827,3831,3838],{"__ignoreMap":160},[164,3693,3694,3696],{"class":166,"line":167},[164,3695,3399],{"class":174},[164,3697,3402],{"class":170},[164,3699,3700,3702],{"class":166,"line":197},[164,3701,3407],{"class":174},[164,3703,3402],{"class":170},[164,3705,3706,3708,3710],{"class":166,"line":1187},[164,3707,3414],{"class":174},[164,3709,2181],{"class":170},[164,3711,3712],{"class":185},"registry.example.com\u002Fmyapp:1.4.0\n",[164,3714,3715,3718,3720],{"class":166,"line":1193},[164,3716,3717],{"class":174},"    restart",[164,3719,2181],{"class":170},[164,3721,3555],{"class":185},[164,3723,3724],{"class":166,"line":1199},[164,3725,1190],{"emptyLinePlaceholder":941},[164,3727,3728,3731],{"class":166,"line":2153},[164,3729,3730],{"class":174},"    ports",[164,3732,3402],{"class":170},[164,3734,3735,3738],{"class":166,"line":2601},[164,3736,3737],{"class":170},"      - ",[164,3739,3635],{"class":185},[164,3741,3742],{"class":166,"line":2613},[164,3743,1190],{"emptyLinePlaceholder":941},[164,3745,3746,3748,3750],{"class":166,"line":2625},[164,3747,3428],{"class":174},[164,3749,2181],{"class":170},[164,3751,3433],{"class":1350},[164,3753,3754,3756,3758],{"class":166,"line":2634},[164,3755,3438],{"class":174},[164,3757,2181],{"class":170},[164,3759,3443],{"class":185},[164,3761,3762],{"class":166,"line":3086},[164,3763,1190],{"emptyLinePlaceholder":941},[164,3765,3766,3769,3771],{"class":166,"line":3092},[164,3767,3768],{"class":174},"    read_only",[164,3770,2181],{"class":170},[164,3772,2631],{"class":1350},[164,3774,3775],{"class":166,"line":3097},[164,3776,1190],{"emptyLinePlaceholder":941},[164,3778,3779,3782],{"class":166,"line":3102},[164,3780,3781],{"class":174},"    tmpfs",[164,3783,3402],{"class":170},[164,3785,3786,3788],{"class":166,"line":3108},[164,3787,3737],{"class":170},[164,3789,3790],{"class":185},"\u002Ftmp\n",[164,3792,3793],{"class":166,"line":3113},[164,3794,1190],{"emptyLinePlaceholder":941},[164,3796,3797,3800],{"class":166,"line":3118},[164,3798,3799],{"class":174},"    security_opt",[164,3801,3402],{"class":170},[164,3803,3804,3806],{"class":166,"line":3123},[164,3805,3737],{"class":170},[164,3807,3808],{"class":185},"no-new-privileges:true\n",[164,3810,3811],{"class":166,"line":3129},[164,3812,1190],{"emptyLinePlaceholder":941},[164,3814,3815,3818],{"class":166,"line":3134},[164,3816,3817],{"class":174},"    cap_drop",[164,3819,3402],{"class":170},[164,3821,3822,3824],{"class":166,"line":3139},[164,3823,3737],{"class":170},[164,3825,3826],{"class":185},"ALL\n",[164,3828,3829],{"class":166,"line":3145},[164,3830,1190],{"emptyLinePlaceholder":941},[164,3832,3833,3836],{"class":166,"line":3150},[164,3834,3835],{"class":174},"    logging",[164,3837,3402],{"class":170},[164,3839,3840,3843,3845],{"class":166,"line":3156},[164,3841,3842],{"class":174},"      driver",[164,3844,2181],{"class":170},[164,3846,3847],{"class":185},"local\n",[16,3849,3850,3851,3854,3855,3858,3859,3862,3863,991],{},"Bu universal template emas, faqat boshlang‘ich nuqta. ",[84,3852,3853],{},"read_only: true"," yoziladigan directory kerak bo‘lgan ilovalarni buzishi mumkin, barcha capability’larni olib tashlash esa ayrim kerakli software’larni ishlamay qolishiga olib kelishi mumkin. Shu sababli production hardening ",[30,3856,3857],{},"least privilege"," tamoyiliga amal qilishi kerak, ",[30,3860,3861],{},"ilova qanday ishlashidan qat’i nazar maksimal cheklov qo‘yish"," tamoyiliga emas. Compose bu service-level sozlamalarni bevosita qo‘llab-quvvatlaydi. (",[37,3864,3027],{"href":3865,"rel":3866},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcompose-file\u002Fservices\u002F?utm_source=chatgpt.com",[41],[11,3868,3870],{"id":3869},"productiondagi-keng-tarqalgan-xatolar","Production’dagi keng tarqalgan xatolar",[16,3872,3873,3874,3877],{},"Production’da Docker bilan bog‘liq muammolarning ko‘pi container’ning o‘zidan emas, deployment qarorlaridan kelib chiqadi. Masalan: keraksiz joyda root bilan ishga tushirish, controlled update jarayonisiz mutable ",[84,3875,3876],{},"latest"," tag’dan foydalanish, database data’ni container layer ichida saqlash, ichki portlarni public qilish, memory limit bermaslik, credential’larni image ichiga joylash, loglarning cheksiz o‘sishiga yo‘l qo‘yish yoki container restart’ni monitoring o‘rniga ishlatish.",[16,3879,3880,3881,991],{},"Yana bir keng tarqalgan xato — production’da application source directory’ni host’dan mount qilish. Docker’ning production uchun Compose tavsiyalarida development-oriented code bind mount’larni olib tashlash va deploy qilingan application code’ni image ichida qoldirish tavsiya qilinadi. (",[37,3882,3027],{"href":3883,"rel":3884},"https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Fhow-tos\u002Fproduction\u002F?utm_source=chatgpt.com",[41],[11,3886,3888],{"id":3887},"qachon-docker-compose-yetarli","Qachon Docker Compose yetarli?",[16,3890,3891],{},"Agar bitta host yetarli bo‘lsa va jamoa shu host’ni infratuzilma chegarasi sifatida qabul qila olsa, Docker Compose production uchun mantiqli variant bo‘lishi mumkin.",[16,3893,3894],{},"Reverse proxy, application container’lar, Redis va ehtimol database’dan iborat setup operatsion jihatdan sodda bo‘lib qolishi mumkin.",[16,3896,3897],{},"Bir nechta server o‘rtasida avtomatik scheduling, node-level failover, katta service discovery, coordinated rolling deployment yoki keng horizontal scaling kerak bo‘la boshlasa, talablar o‘zgaradi. Shu nuqtada savol Docker production’da ishlaydimi yoki yo‘qmi degan savol emas. Savol containerlarni qaysi orchestration platform boshqarishi kerakligiga aylanadi.",[16,3899,3900],{},[164,3901,3902],{},"INTERNAL LINK: Docker Compose vs Container Orchestration",[11,3904,742],{"id":741},[16,3906,3907],{},"Docker production deployment’iga bitta Dockerfile sifatida emas, butun tizim sifatida qarang.",[16,3909,3910],{},"Minimal foydali production model quyidagicha:",[16,3912,3913],{},[30,3914,3915],{},"source code → CI build and test → immutable image → registry → controlled deployment → health verification → monitoring → rollback",[16,3917,3918],{},"Persistent state’ni almashtiriladigan application container’lardan tashqarida saqlang. Privilege va ochiq portlarni cheklang. Resource limit’larni real o‘lchov asosida belgilang. Credential’larni image’dan mustaqil himoyalang. Backup’ni avtomatlashtiring va restore jarayonini test qiling.",[16,3920,3921],{},"Docker ilovani package qilishni soddalashtiradi. Bu package’ni ishonchli qiladigan narsa esa production engineering hisoblanadi.",[11,3923,759],{"id":758},[761,3925,3927],{"id":3926},"docker-compose-production-uchun-xavfsizmi","Docker Compose production uchun xavfsizmi?",[16,3929,3930],{},"Bo‘lishi mumkin. Docker Compose’ni production va single-host deployment uchun rasman hujjatlashtiradi. U aynan sizning ilovangiz uchun to‘g‘ri tanlovmi yoki yo‘qmi, availability, scaling va operational talablaringizga bog‘liq.",[761,3932,3934],{"id":3933},"containerlarni-root-bilan-ishga-tushirish-kerakmi","Container’larni root bilan ishga tushirish kerakmi?",[16,3936,3937,3938,3231,3940,991],{},"Faqat ilovaga haqiqatan ham shunday privilege kerak bo‘lsa. Docker root’siz ishlay oladigan service’lar uchun ",[84,3939,3230],{},[37,3941,3027],{"href":3234,"rel":3942},[41],[761,3944,3946,3947,3949],{"id":3945},"productionda-latest-ishlatish-kerakmi","Production’da ",[84,3948,3876],{}," ishlatish kerakmi?",[16,3951,3952,3953,991],{},"Mutable tag aniq deployment’ni qayta takrorlashni qiyinlashtiradi. Versioned tag yoki digest pinning ko‘proq nazorat beradi, lekin update’lar faol boshqarib borilishi kerak. (",[37,3954,3027],{"href":3234,"rel":3955},[41],[761,3957,3959],{"id":3958},"docker-volumelar-uchun-backup-kerakmi","Docker volume’lar uchun backup kerakmi?",[16,3961,3962],{},"Ha. Volume container lifecycle’dan tashqarida data’ni saqlaydi, lekin avtomatik disaster recovery bermaydi.",[761,3964,3966,3969],{"id":3965},"restart-always-ilovani-highly-available-qiladimi",[84,3967,3968],{},"restart: always"," ilovani highly available qiladimi?",[16,3971,3972],{},"Yo‘q. U yiqilgan container’ni ayni Docker host’da qayta ishga tushirishi mumkin. U host failure’dan himoya qilmaydi va ilova nima sababdan yiqilganini aniqlamaydi.",[11,3974,3976],{"id":3975},"yakun","Yakun",[16,3978,3979],{},"Container muvaffaqiyatli ishga tushgani Docker production-ready degani emas. Docker production-ready tizimning bir qismiga aylanishi uchun image’lar reproducible bo‘lishi, privilege va resurslar nazorat qilinishi, state himoyalanishi, failure aniqlanishi, loglar boshqarilishi, network exposure ongli ravishda sozlanishi va deployment’ni tiklash yoki rollback qilish imkoniyati bo‘lishi kerak.",[16,3981,3982],{},"Container — tizimning almashtiriladigan qismi. Ishonchlilikni esa uning atrofidagi production arxitektura ta’minlaydi.",[11,3984,836],{"id":835},[838,3986,3987,3997,4006,4014,4023,4032,4041,4050,4060,4069],{},[841,3988,3989,3990,2836,3993],{},"Docker — ",[845,3991,3992],{},"Building best practices",[37,3994,3996],{"href":3025,"rel":3995},[41],"Docker Build best practices",[841,3998,3989,3999,2836,4002],{},[845,4000,4001],{},"Use Compose in production",[37,4003,4005],{"href":3883,"rel":4004},[41],"Compose in production",[841,4007,3989,4008,2836,4011],{},[845,4009,4010],{},"Docker Engine security",[37,4012,4010],{"href":3329,"rel":4013},[41],[841,4015,3989,4016,2836,4019],{},[845,4017,4018],{},"Rootless mode",[37,4020,4022],{"href":3366,"rel":4021},[41],"Docker Rootless mode",[841,4024,3989,4025,2836,4028],{},[845,4026,4027],{},"Resource constraints",[37,4029,4031],{"href":3383,"rel":4030},[41],"Docker resource constraints",[841,4033,3989,4034,2836,4037],{},[845,4035,4036],{},"Configure logging drivers",[37,4038,4040],{"href":3661,"rel":4039},[41],"Docker logging drivers",[841,4042,3989,4043,2836,4046],{},[845,4044,4045],{},"Volumes",[37,4047,4049],{"href":3469,"rel":4048},[41],"Docker volumes",[841,4051,3989,4052,2836,4055],{},[845,4053,4054],{},"Build secrets",[37,4056,4059],{"href":4057,"rel":4058},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fbuilding\u002Fsecrets\u002F?utm_source=chatgpt.com",[41],"Docker build secrets",[841,4061,3989,4062,2836,4065],{},[845,4063,4064],{},"Dockerfile reference",[37,4066,4064],{"href":4067,"rel":4068},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fdockerfile\u002F?utm_source=chatgpt.com",[41],[841,4070,3989,4071,2836,4074],{},[845,4072,4073],{},"Port publishing and mapping",[37,4075,4078],{"href":4076,"rel":4077},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fnetwork\u002Fport-publishing\u002F?utm_source=chatgpt.com",[41],"Docker port publishing",[915,4080,4081],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":160,"searchDepth":197,"depth":197,"links":4083},[4084,4085,4086,4087,4090,4091,4092,4093,4094,4095,4096,4097,4098,4099,4100,4101,4102,4103],{"id":2897,"depth":197,"text":2898},{"id":24,"depth":197,"text":25},{"id":2919,"depth":197,"text":2920},{"id":3015,"depth":197,"text":3016,"children":4088},[4089],{"id":3238,"depth":1187,"text":3239},{"id":3280,"depth":197,"text":3281},{"id":3315,"depth":197,"text":3316},{"id":3376,"depth":197,"text":3377},{"id":3452,"depth":197,"text":3453},{"id":3494,"depth":197,"text":3495},{"id":3578,"depth":197,"text":3579},{"id":3646,"depth":197,"text":3647},{"id":3682,"depth":197,"text":3683},{"id":3869,"depth":197,"text":3870},{"id":3887,"depth":197,"text":3888},{"id":741,"depth":197,"text":742},{"id":758,"depth":197,"text":759},{"id":3975,"depth":197,"text":3976},{"id":835,"depth":197,"text":836},"Web Dasturlash","Docker’da web-ilovalarni production muhitida xavfsiz va ishonchli ishga tushirishni o‘rganing: image’lar, resource limit, persistent storage, health check, loglar, secret’lar va deployment.","\u002Fdocker-web.png","Docker",{},"\u002Fblog\u002Fuz\u002Fdoker-production",{"title":2892,"description":4105},"doker-production","blog\u002Fuz\u002Fdoker-production","docker-production","E2kqbhUBsDN3VoMXRDfidJD2Lv5PrRm6-PGW-wl7uBg",{"id":4116,"title":4117,"author":6,"body":4118,"category":4104,"description":4866,"draft":939,"extension":940,"featured":941,"image":4867,"imageAlt":4868,"locale":944,"meta":4869,"navigation":941,"path":4870,"publishedAt":1822,"seo":4871,"slug":4173,"stem":4872,"translationKey":4873,"updatedAt":1822,"__hash__":4874},"blog\u002Fblog\u002Fuz\u002Fipv4-va-ipv6.md","IPv4 va IPv6: zamonaviy saytlar nimani bilishi kerak?",{"type":8,"value":4119,"toc":4850},[4120,4124,4139,4150,4152,4164,4171,4175,4277,4284,4288,4291,4294,4317,4320,4326,4338,4344,4354,4368,4371,4378,4381,4385,4388,4391,4402,4405,4412,4415,4418,4422,4425,4428,4454,4460,4463,4468,4471,4475,4478,4485,4488,4495,4498,4504,4507,4512,4517,4521,4524,4531,4534,4537,4541,4547,4550,4557,4560,4586,4589,4605,4608,4623,4626,4633,4640,4644,4650,4653,4659,4661,4668,4675,4678,4681,4683,4687,4695,4699,4702,4706,4713,4717,4725,4729,4732,4734,4737,4740,4743,4745,4847],[11,4121,4123],{"id":4122},"zamonaviy-saytlar-uchun-ipv4-va-ipv6","Zamonaviy saytlar uchun IPv4 va IPv6",[16,4125,4126,4127,4130,4131,4134,4135,991],{},"IPv4 va IPv6 bir xil asosiy vazifani bajaradi: ular paketlarning IP tarmoqlar orqali qurilmalar o‘rtasida uzatilishiga imkon beradi. Asosiy farq shundaki, IPv4 ",[30,4128,4129],{},"32 bitli manzillardan",", IPv6 esa ",[30,4132,4133],{},"128 bitli manzillardan"," foydalanadi va IPv4’ning davomchisi sifatida yaratilgan. Kattaroq manzil maydoni bugungi internet infratuzilmasi shakllanishiga kuchli ta’sir qilgan uzoq muddatli IP manzil yetishmovchiligi muammosini hal qiladi. (",[37,4136,1262],{"href":4137,"rel":4138},"https:\u002F\u002Fwww.rfc-editor.org\u002Finfo\u002Frfc791\u002F?utm_source=chatgpt.com",[41],[16,4140,4141,4142,4145,4146,4149],{},"Biroq zamonaviy sayt uchun amaliy savol ko‘pincha ",[30,4143,4144],{},"“IPv4 yoki IPv6?”"," emas. To‘g‘riroq savol — ",[30,4147,4148],{},"“Foydalanuvchilar saytga ikkala protokol orqali ham ishonchli kira oladimi?”"," Ko‘pchilik ommaviy web loyihalarda ikkala protokolni to‘g‘ridan-to‘g‘ri yoki CDN, reverse proxy yoxud hosting platformasi orqali qo‘llab-quvvatlash eng xavfsiz o‘tish strategiyasidir.",[11,4151,25],{"id":24},[16,4153,4154,4155,4158,4159,991],{},"IPv4 hali ham keng qo‘llanadi va faqat IPv6 mavjud bo‘lgani uchun uni ommaviy saytda o‘chirib qo‘yish odatda to‘g‘ri emas. IPv6 — IPv4’ning uzoq muddatli davomchisi va internet trafikining sezilarli qismiga aylangan: Cloudflare Radar’ning hozirgi ma’lumotlariga ko‘ra, uning global tarmog‘idagi HTTP so‘rovlarining taxminan ",[30,4156,4157],{},"41%"," IPv6 orqali yuboriladi, biroq bu ko‘rsatkich tarmoq va mamlakatga qarab sezilarli darajada farq qiladi. (",[37,4160,4163],{"href":4161,"rel":4162},"https:\u002F\u002Fradar.cloudflare.com\u002F?utm_source=chatgpt.com",[41],"radar.cloudflare.com",[16,4165,4166,4167,4170],{},"Ko‘pchilik saytlar uchun ",[30,4168,4169],{},"dual-stack connectivity"," — saytni bir vaqtning o‘zida IPv4 va IPv6 orqali ochish imkoniyati — amaliy yechimdir. Shunda zamonaviy client’lar mos ishlaydigan tarmoq yo‘lini o‘zlari tanlay oladi.",[11,4172,4174],{"id":4173},"ipv4-va-ipv6","IPv4 va IPv6",[48,4176,4177,4190],{},[51,4178,4179],{},[54,4180,4181,4184,4187],{},[57,4182,4183],{},"Xususiyat",[57,4185,4186],{},"IPv4",[57,4188,4189],{},"IPv6",[64,4191,4192,4203,4218,4233,4244,4255,4266],{},[54,4193,4194,4197,4200],{},[69,4195,4196],{},"Manzil hajmi",[69,4198,4199],{},"32 bits",[69,4201,4202],{},"128 bits",[54,4204,4205,4208,4213],{},[69,4206,4207],{},"Misol",[69,4209,4210],{},[84,4211,4212],{},"192.0.2.10",[69,4214,4215],{},[84,4216,4217],{},"2001:db8::10",[54,4219,4220,4223,4228],{},[69,4221,4222],{},"DNS yozuvi",[69,4224,4225],{},[84,4226,4227],{},"A",[69,4229,4230],{},[84,4231,4232],{},"AAAA",[54,4234,4235,4238,4241],{},[69,4236,4237],{},"Manzillar mavjudligi",[69,4239,4240],{},"Juda cheklangan",[69,4242,4243],{},"Ancha katta manzil maydoni",[54,4245,4246,4249,4252],{},[69,4247,4248],{},"Broadcast",[69,4250,4251],{},"Qo‘llab-quvvatlanadi",[69,4253,4254],{},"Multicast mexanizmlari bilan almashtirilgan",[54,4256,4257,4260,4263],{},[69,4258,4259],{},"Bugungi saytlardagi qo‘llab-quvvatlash",[69,4261,4262],{},"Ko‘plab muhitlarda zarur",[69,4264,4265],{},"Tobora muhimlashib bormoqda",[54,4267,4268,4271,4274],{},[69,4269,4270],{},"Odatdagi deployment",[69,4272,4273],{},"IPv4 yoki dual-stack",[69,4275,4276],{},"Ommaviy saytlar uchun odatda dual-stack",[16,4278,4279,4280,991],{},"IPv6 shunchaki manzillari uzunroq bo‘lgan IPv4 emas. Uning spetsifikatsiyasi paketlarni qayta ishlashning ayrim qismlarini ham o‘zgartiradi va asosiy header tuzilmasini soddalashtiradi. IPv6 unicast, multicast va anycast addressing’ni qo‘llab-quvvatlaydi va IPv4’dan farqli ravishda broadcast manzillarini belgilamaydi. (",[37,4281,1262],{"href":4282,"rel":4283},"https:\u002F\u002Fwww.rfc-editor.org\u002Finfo\u002Frfc8200\u002F?utm_source=chatgpt.com",[41],[11,4285,4287],{"id":4286},"sayt-uchun-nima-ozgaradi","Sayt uchun nima o‘zgaradi?",[16,4289,4290],{},"Application darajasida hayratlanarli darajada kam narsa o‘zgaradi.",[16,4292,4293],{},"Saytingiz avvalgidek quyidagilardan foydalanishi mumkin:",[3335,4295,4296,4299,4302,4305,4308,4311,4314],{},[841,4297,4298],{},"HTTPS",[841,4300,4301],{},"HTTP\u002F2 yoki HTTP\u002F3",[841,4303,4304],{},"TLS",[841,4306,4307],{},"Nginx yoki Apache",[841,4309,4310],{},"Node.js, PHP, Python, Go yoki boshqa backend",[841,4312,4313],{},"CDN va reverse proxy",[841,4315,4316],{},"odatiy domen nomlari",[16,4318,4319],{},"Muhim o‘zgarish tarmoq stack’ining quyi qatlamida yuz beradi.",[16,4321,4322,4323,4325],{},"IPv4 uchun DNS odatda ",[84,4324,4227],{}," record qaytaradi:",[154,4327,4332],{"className":4328,"code":4329,"language":4330,"meta":4331,"style":160},"language-dns shiki shiki-themes github-light github-dark","example.com.    A       192.0.2.10\n","dns","id=\"jsjpia\"",[84,4333,4334],{"__ignoreMap":160},[164,4335,4336],{"class":166,"line":167},[164,4337,4329],{},[16,4339,4340,4341,4343],{},"IPv6 uchun DNS ",[84,4342,4232],{}," record’dan foydalanadi:",[154,4345,4348],{"className":4328,"code":4346,"language":4330,"meta":4347,"style":160},"example.com.    AAAA    2001:db8::10\n","id=\"jlacom\"",[84,4349,4350],{"__ignoreMap":160},[164,4351,4352],{"class":166,"line":167},[164,4353,4346],{},[16,4355,4356,4357,4359,4360,4362,4363,991],{},"Bitta hostname ikkala record’ni ham e’lon qilishi mumkin. Cloudflare’ning DNS hujjatlari ham ",[84,4358,4227],{}," record’larni IPv4 manzillariga, ",[84,4361,4232],{}," record’larni esa IPv6 manzillariga bog‘lovchi yozuvlar sifatida belgilaydi. (",[37,4364,4367],{"href":4365,"rel":4366},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fdns\u002Fmanage-dns-records\u002Freference\u002Fdns-record-types\u002F?utm_source=chatgpt.com",[41],"developers.cloudflare.com",[16,4369,4370],{},"Bunda URL o‘zgarmaydi:",[154,4372,4376],{"className":4373,"code":4374,"language":1991,"meta":4375},[1989],"https:\u002F\u002Fexample.com\u002F\n","id=\"dft6yb\"",[84,4377,4374],{"__ignoreMap":160},[16,4379,4380],{},"Browser hostname’ni resolve qiladi va qaysi tarmoq yo‘lidan foydalanishni aniqlaydi.",[11,4382,4384],{"id":4383},"dual-stack-ulanishlar-qanday-ishlaydi","Dual-stack ulanishlar qanday ishlaydi?",[16,4386,4387],{},"Keng tarqalgan noto‘g‘ri tushuncha shuki, browser avval IPv6’ni sinab ko‘radi, u ishlamasa kutib turadi va shundan keyingina IPv4’ga o‘tadi.",[16,4389,4390],{},"Zamonaviy networking mexanizmlari bundan murakkabroq ishlaydi.",[16,4392,4393,4394,4397,4398,991],{},"RFC 8305 ",[30,4395,4396],{},"Happy Eyeballs Version 2","’ni belgilaydi — bu bir nechta IPv4 va IPv6 manzillariga ega bo‘lishi mumkin bo‘lgan host’lar uchun mo‘ljallangan yondashuv. Client’lar ulanish yo‘llarini shunday sinab ko‘rishi mumkinki, address family’lardan biri ishlamasa, buzilgan bo‘lsa yoki boshqasiga qaraganda sezilarli darajada yomon ishlasa, foydalanuvchi sezadigan kechikish kamayadi. (",[37,4399,1262],{"href":4400,"rel":4401},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc8305.html?utm_source=chatgpt.com",[41],[16,4403,4404],{},"Konseptual ko‘rinishi:",[154,4406,4410],{"className":4407,"code":4408,"language":1991,"meta":4409},[1989],"Browser\n   |\n   +---- IPv6 ----\\\n   |               > Website\n   +---- IPv4 ----\u002F\n","id=\"ir8ddy\"",[84,4411,4408],{"__ignoreMap":160},[16,4413,4414],{},"Foydalanuvchi oxir-oqibat qaysi protokol orqali ulanish o‘rnatilganini bilishi shart emas.",[16,4416,4417],{},"Shu sababli noto‘g‘ri sozlangan IPv6 umuman IPv6 bo‘lmagan holatdan ham yomonroq bo‘lishi mumkin: ishlamaydigan IPv6 connectivity’ni e’lon qilish yana bitta nosoz bo‘lishi mumkin bo‘lgan tarmoq yo‘lini yaratadi.",[11,4419,4421],{"id":4420},"ipv6-tezroqmi","IPv6 tezroqmi?",[16,4423,4424],{},"Har doim ham emas.",[16,4426,4427],{},"IPv6 bir tarmoqda tezroq, boshqasida esa sekinroq bo‘lishi mumkin. Haqiqiy performance quyidagi omillarga bog‘liq:",[3335,4429,4430,4433,4436,4439,4442,4445,4448,4451],{},[841,4431,4432],{},"ISP routing",[841,4434,4435],{},"peering",[841,4437,4438],{},"CDN topology",[841,4440,4441],{},"server joylashuvi",[841,4443,4444],{},"packet loss",[841,4446,4447],{},"network congestion",[841,4449,4450],{},"IPv4 NAT infrastructure",[841,4452,4453],{},"IPv6 deployment sifati",[16,4455,4456,4457,991],{},"Happy Eyeballs mavjud bo‘lishining sabablaridan biri ham IPv4 va IPv6 yo‘llari connectivity va performance jihatidan bir-biridan farq qilishi mumkinligidir. (",[37,4458,1262],{"href":4400,"rel":4459},[41],[16,4461,4462],{},"Shuning uchun:",[16,4464,4465],{},[30,4466,4467],{},"IPv6’ni qo‘llab-quvvatlashning o‘zi performance optimizatsiyasi emas.",[16,4469,4470],{},"Bitta protokol doim kamroq latency beradi deb taxmin qilish o‘rniga, foydalanuvchilaringiz olayotgan real marshrutlarni o‘lchang.",[11,4472,4474],{"id":4473},"ipv6-seoni-yaxshilaydimi","IPv6 SEO’ni yaxshilaydimi?",[16,4476,4477],{},"IPv6’ning o‘zini SEO ranking ustunligi deb hisoblash uchun hujjatlashtirilgan asos yo‘q.",[16,4479,4480,4481,991],{},"Google’ning Search uchun e’lon qilingan texnik talablarida asosiy e’tibor Googlebot sahifaga kira olishi, server muvaffaqiyatli HTTP status qaytarishi va sahifada index qilinadigan content bo‘lishiga qaratilgan. IPv6 u yerda texnik talab sifatida ko‘rsatilmagan. (",[37,4482,1966],{"href":4483,"rel":4484},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fessentials\u002Ftechnical?authuser=1&utm_source=chatgpt.com",[41],[16,4486,4487],{},"Shuning uchun SEO bilan bog‘liqligi bilvosita.",[16,4489,4490,4491,991],{},"Agar tarmoq muammosi saytingizni foydalanuvchilar yoki crawler’lar uchun ochilmaydigan, beqaror yoki sekin qilib qo‘ysa, bunday infratuzilma muammosi ahamiyatli bo‘lishi mumkin. Google server va tarmoq muammolarini crawling xatolarining mumkin bo‘lgan sabablaridan biri sifatida aniq ko‘rsatadi. (",[37,4492,1966],{"href":4493,"rel":4494},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Ffundamentals\u002Fhow-search-works?utm_source=chatgpt.com",[41],[16,4496,4497],{},"Shuning uchun foydali SEO prinsipi bu emas:",[4499,4500,4501],"blockquote",{},[16,4502,4503],{},"Yuqoriroq ranking olish uchun IPv6’ni yoqing.",[16,4505,4506],{},"Balki:",[4499,4508,4509],{},[16,4510,4511],{},"E’lon qilingan har bir tarmoq yo‘li ishonchli ishlashini ta’minlang.",[16,4513,4514],{},[164,4515,4516],{},"INTERNAL LINK: How Google Crawling Works",[11,4518,4520],{"id":4519},"ipv6-only-tarmoqlar","IPv6-only tarmoqlar",[16,4522,4523],{},"Faqat IPv6 orqali ishlaydigan tarmoqlar ham mavjud.",[16,4525,4526,4527,991],{},"Bunday tarmoqlar IPv4-only resurslarga ulanishi kerak bo‘lsa, NAT64 va DNS64 kabi translation texnologiyalaridan foydalanilishi mumkin. DNS64 IPv4 record’lar asosida IPv6 DNS javoblarini sintez qilishi mumkin, natijada IPv6-only client’lar NAT64 gateway orqali ulana oladi. (",[37,4528,4367],{"href":4529,"rel":4530},"https:\u002F\u002Fdevelopers.cloudflare.com\u002F1.1.1.1\u002Finfrastructure\u002Fipv6-networks\u002F?utm_source=chatgpt.com",[41],[16,4532,4533],{},"Bu compatibility layer foydali, biroq IPv6’ni to‘g‘ridan-to‘g‘ri qo‘llab-quvvatlaydigan sayt har bir tashrifchining tarmog‘i bunday translation’ni muvaffaqiyatli taqdim etishiga tayanib qolmaydi.",[16,4535,4536],{},"Bu zamonaviy ommaviy servislarni IPv6-capable qilish, shu bilan birga kerakli joylarda IPv4 compatibility’ni saqlashning yana bir amaliy sababidir.",[11,4538,4540],{"id":4539},"ipv6ni-xavfsiz-yoqish","IPv6’ni xavfsiz yoqish",[16,4542,4543,4544,4546],{},"Ishni ",[84,4545,4232],{}," record qo‘shishdan boshlamang.",[16,4548,4549],{},"Avval butun yo‘l ishlayotganini tekshiring:",[154,4551,4555],{"className":4552,"code":4553,"language":1991,"meta":4554},[1989],"Internet\n   ↓\nDNS\n   ↓\nCDN \u002F Load Balancer\n   ↓\nFirewall\n   ↓\nReverse Proxy\n   ↓\nApplication\n","id=\"65b4pz\"",[84,4556,4553],{"__ignoreMap":160},[16,4558,4559],{},"Keyin tekshiring:",[154,4561,4564],{"className":1337,"code":4562,"language":1339,"meta":4563,"style":160},"dig A example.com\ndig AAAA example.com\n","id=\"3x5dg6\"",[84,4565,4566,4577],{"__ignoreMap":160},[164,4567,4568,4571,4574],{"class":166,"line":167},[164,4569,4570],{"class":178},"dig",[164,4572,4573],{"class":185}," A",[164,4575,4576],{"class":185}," example.com\n",[164,4578,4579,4581,4584],{"class":166,"line":197},[164,4580,4570],{"class":178},[164,4582,4583],{"class":185}," AAAA",[164,4585,4576],{"class":185},[16,4587,4588],{},"IPv4’ni alohida test qiling:",[154,4590,4593],{"className":1337,"code":4591,"language":1339,"meta":4592,"style":160},"curl -4 https:\u002F\u002Fexample.com\u002F\n","id=\"zpf5va\"",[84,4594,4595],{"__ignoreMap":160},[164,4596,4597,4599,4602],{"class":166,"line":167},[164,4598,1347],{"class":178},[164,4600,4601],{"class":1350}," -4",[164,4603,4604],{"class":185}," https:\u002F\u002Fexample.com\u002F\n",[16,4606,4607],{},"Keyin IPv6’ni:",[154,4609,4612],{"className":1337,"code":4610,"language":1339,"meta":4611,"style":160},"curl -6 https:\u002F\u002Fexample.com\u002F\n","id=\"izjx3q\"",[84,4613,4614],{"__ignoreMap":160},[164,4615,4616,4618,4621],{"class":166,"line":167},[164,4617,1347],{"class":178},[164,4619,4620],{"class":1350}," -6",[164,4622,4604],{"class":185},[16,4624,4625],{},"Ikkala so‘rov ham application’dan kutilgan javobni qaytarishi kerak.",[16,4627,4628,4629,4632],{},"Shuningdek, monitoring, firewall rules, rate limiting, IP allowlists, application logs, fraud detection va analytics tizimlarini ham tekshiring. Har bir client manzili ",[84,4630,4631],{},"192.0.2.1"," ko‘rinishida bo‘ladi deb hisoblaydigan software quyidagidek manzilga duch kelganda noto‘g‘ri ishlashi mumkin:",[154,4634,4638],{"className":4635,"code":4636,"language":1991,"meta":4637},[1989],"2001:db8:85a3::8a2e:370:7334\n","id=\"4nwnbu\"",[84,4639,4636],{"__ignoreMap":160},[11,4641,4643],{"id":4642},"keng-tarqalgan-xatolar","Keng tarqalgan xatolar",[16,4645,4646,4647,4649],{},"Eng xavfli xatolardan biri — hosting dashboard’da IPv6 manzili ko‘rsatilgani uchungina ",[84,4648,4232],{}," record’ni e’lon qilish. DNS’da manzil mavjudligi end-to-end connectivity ishlayotganini isbotlamaydi.",[16,4651,4652],{},"Yana bir xato — NAT’ni security vositasi deb hisoblash. Qaysi IP versiyasi ishlatilishidan qat’i nazar, firewall policy va exposure control ongli ravishda sozlanishi kerak.",[16,4654,4655,4656,991],{},"Shuningdek, infratuzilma “zamonaviy” ko‘rinsin deb IPv4’ni o‘chirib qo‘ymang. IPv6 adoption sezilarli darajaga yetgan, ammo hali to‘liq emas. Cloudflare’ning hozirgi global o‘lchovlari trafikning sezilarli qismi hali ham IPv4 orqali kelayotganini ko‘rsatadi. (",[37,4657,4163],{"href":4161,"rel":4658},[41],[11,4660,742],{"id":741},[16,4662,4663,4664,4667],{},"2026-yildagi odatiy ommaviy sayt uchun, agar hosting arxitekturangiz uni ishonchli qo‘llab-quvvatlasa, ",[30,4665,4666],{},"sinovdan o‘tgan dual-stack availability","’ni tanlang.",[16,4669,4670,4671,991],{},"IPv4 va IPv6’ni birga ishlating yoki mos CDN yoxud edge platformaga foydalanuvchi tomonda ikkala protokolni ham taqdim etishga ruxsat bering. Masalan, Cloudflare proxied domenlar uchun IPv6 compatibility’ni default holatda yoqadi va IPv4 bilan birga IPv6 connectivity’ni ham e’lon qilishi mumkin. (",[37,4672,4367],{"href":4673,"rel":4674},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fnetwork\u002Fipv6-compatibility\u002F?utm_source=chatgpt.com",[41],[16,4676,4677],{},"Eng muhimi, IPv6’ga haqiqiy production yo‘li sifatida qarang: uni monitoring qiling, deployment vaqtida test qiling, firewall policy’da hisobga oling va tashqi tarmoqlardan tekshiring.",[16,4679,4680],{},"IPv6’ni faqat “qo‘llab-quvvatlaymiz” degan katakka belgi qo‘yish uchun joriy qilmang.",[11,4682,759],{"id":758},[761,4684,4686],{"id":4685},"ipv4-eskirganmi","IPv4 eskirganmi?",[16,4688,4689,4690,991],{},"Yo‘q. IPv4 hali ham keng ishlatiladi, garchi uning address space cheklovlari IPv6 yaratilishi va joriy qilinishining asosiy sabablaridan biri bo‘lgan bo‘lsa ham. Masalan, ARIN hali ham qaytarilgan cheklangan IPv4 address space uchun waiting-list jarayonini yuritadi. (",[37,4691,4694],{"href":4692,"rel":4693},"https:\u002F\u002Fwww.arin.net\u002Fannouncements\u002F20260702\u002F?utm_source=chatgpt.com",[41],"arin.net",[761,4696,4698],{"id":4697},"har-bir-sayt-ipv6ni-qollab-quvvatlashi-kerakmi","Har bir sayt IPv6’ni qo‘llab-quvvatlashi kerakmi?",[16,4700,4701],{},"IPv6 tobora foydaliroq bo‘lib bormoqda, ayniqsa uzoq muddat ishlaydigan infratuzilma uchun. Biroq to‘g‘ri ishlaydigan IPv4-only connectivity noto‘g‘ri sozlangan IPv6’dan yaxshiroq.",[761,4703,4705],{"id":4704},"ipv4-va-ipv6-birga-ishlay-oladimi","IPv4 va IPv6 birga ishlay oladimi?",[16,4707,4708,4709,4712],{},"Ha. Bu yondashuv odatda ",[30,4710,4711],{},"dual-stack networking"," deb ataladi va keng tarqalgan o‘tish modelidir.",[761,4714,4716],{"id":4715},"alohida-domenlar-kerakmi","Alohida domenlar kerakmi?",[16,4718,4719,4720,586,4722,4724],{},"Yo‘q. Bitta hostname bir vaqtning o‘zida ",[84,4721,4227],{},[84,4723,4232],{}," DNS record’larga ega bo‘lishi mumkin.",[761,4726,4728],{"id":4727},"ipv6ni-yoqish-core-web-vitalsni-yaxshilaydimi","IPv6’ni yoqish Core Web Vitals’ni yaxshilaydimi?",[16,4730,4731],{},"Avtomatik tarzda emas. IPv6 boshqa tarmoq marshrutidan foydalanishi mumkin, biroq yakuniy latency aniq ISP, routing, peering, CDN va server yo‘liga bog‘liq.",[11,4733,826],{"id":825},[16,4735,4736],{},"IPv6 saytingizning yangi versiyasi emas. Bu trafikni unga yetkazishning yana bir usuli.",[16,4738,4739],{},"IPv4 hali ham muhim, IPv6 esa uni eksperimental texnologiya deb hisoblash uchun haddan tashqari keng tarqalgan. Shuning uchun ko‘pchilik zamonaviy saytlar uchun amaliy arxitektura bu ikki protokoldan faqat bittasini tanlashga borib taqalmaydi.",[16,4741,4742],{},"Imkon bo‘lsa, ikkalasini ham qo‘llab-quvvatlang, faqat haqiqatda ishlaydigan connectivity’ni e’lon qiling va IPv4 hamda IPv6’ni alohida tarmoq yo‘llari sifatida o‘lchang.",[11,4744,836],{"id":835},[838,4746,4747,4757,4767,4778,4789,4798,4807,4817,4827,4837],{},[841,4748,4749,4752,4753],{},[30,4750,4751],{},"IETF \u002F RFC Editor — RFC 8200: Internet Protocol, Version 6 (IPv6) Specification",", July 2017. ",[37,4754,4756],{"href":4282,"rel":4755},[41],"RFC 8200",[841,4758,4759,4762,4763],{},[30,4760,4761],{},"IETF \u002F RFC Editor — RFC 791: Internet Protocol",", September 1981. ",[37,4764,4766],{"href":4137,"rel":4765},[41],"RFC 791",[841,4768,4769,4772,4773],{},[30,4770,4771],{},"IETF \u002F RFC Editor — RFC 4291: IP Version 6 Addressing Architecture",", February 2006. ",[37,4774,4777],{"href":4775,"rel":4776},"https:\u002F\u002Fwww.rfc-editor.org\u002Finfo\u002Frfc4291\u002F?utm_source=chatgpt.com",[41],"RFC 4291",[841,4779,4780,4783,4784],{},[30,4781,4782],{},"IETF \u002F RFC Editor — RFC 8305: Happy Eyeballs Version 2",", December 2017. ",[37,4785,4788],{"href":4786,"rel":4787},"https:\u002F\u002Fwww.rfc-editor.org\u002Finfo\u002Frfc8305\u002F?utm_source=chatgpt.com",[41],"RFC 8305",[841,4790,4791,2836,4794],{},[30,4792,4793],{},"Google Search Central — Google Search Technical Requirements",[37,4795,4797],{"href":4483,"rel":4796},[41],"Google Search technical requirements",[841,4799,4800,2836,4803],{},[30,4801,4802],{},"Google Search Central — How Google Search Works",[37,4804,4806],{"href":4493,"rel":4805},[41],"How Google Search works",[841,4808,4809,4812,4813],{},[30,4810,4811],{},"Cloudflare — IPv6 Compatibility",", updated August 25, 2026. ",[37,4814,4816],{"href":4673,"rel":4815},[41],"Cloudflare IPv6 compatibility",[841,4818,4819,4822,4823],{},[30,4820,4821],{},"Cloudflare — DNS Record Types",", updated June 2, 2026. ",[37,4824,4826],{"href":4365,"rel":4825},[41],"Cloudflare DNS record types",[841,4828,4829,4832,4833],{},[30,4830,4831],{},"Cloudflare Radar — Worldwide Adoption & Usage",", accessed September 20, 2026. ",[37,4834,4836],{"href":4161,"rel":4835},[41],"Cloudflare Radar",[841,4838,4839,4842,4843],{},[30,4840,4841],{},"ARIN — IPv4 Waiting List Distribution",", July 2, 2026. ",[37,4844,4846],{"href":4692,"rel":4845},[41],"ARIN IPv4 Waiting List Distribution",[915,4848,4849],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":160,"searchDepth":197,"depth":197,"links":4851},[4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865],{"id":4122,"depth":197,"text":4123},{"id":24,"depth":197,"text":25},{"id":4173,"depth":197,"text":4174},{"id":4286,"depth":197,"text":4287},{"id":4383,"depth":197,"text":4384},{"id":4420,"depth":197,"text":4421},{"id":4473,"depth":197,"text":4474},{"id":4519,"depth":197,"text":4520},{"id":4539,"depth":197,"text":4540},{"id":4642,"depth":197,"text":4643},{"id":741,"depth":197,"text":742},{"id":758,"depth":197,"text":759},{"id":825,"depth":197,"text":826},{"id":835,"depth":197,"text":836},"Zamonaviy saytlar uchun IPv4 va IPv6 farqlarini tushuning: DNS, dual-stack hosting, performance, SEO ta’siri, testlash va deployment bo‘yicha amaliy tavsiyalar.","\u002Fipv4-vs-ipv6.png","IPv6 and IPv6",{},"\u002Fblog\u002Fuz\u002Fipv4-va-ipv6",{"title":4117,"description":4866},"blog\u002Fuz\u002Fipv4-va-ipv6","ipv4-vs-ipv6.md","YV2-j1zEHSDYslX5_PKjt87n24gsR-HxSAvE7Qn3rzE",{"id":4876,"title":4877,"author":6,"body":4878,"category":5758,"description":5759,"draft":939,"extension":940,"featured":941,"image":5760,"imageAlt":5761,"locale":944,"meta":5762,"navigation":941,"path":5763,"publishedAt":1822,"seo":5764,"slug":5765,"stem":5766,"translationKey":5767,"updatedAt":1822,"__hash__":5768},"blog\u002Fblog\u002Fuz\u002Fseo-da-crawling.md","SEO’da Crawling nima va qidiruv crawler’lari qanday ishlaydi?",{"type":8,"value":4879,"toc":5737},[4880,4884,4891,4911,4914,4916,4921,4924,4933,4937,4940,5002,5005,5010,5014,5017,5022,5025,5030,5033,5058,5071,5074,5079,5096,5115,5119,5122,5126,5133,5136,5142,5147,5151,5154,5156,5179,5197,5202,5206,5211,5213,5228,5237,5240,5243,5247,5250,5255,5258,5267,5273,5276,5286,5288,5319,5329,5334,5338,5341,5347,5353,5358,5362,5365,5380,5383,5386,5406,5412,5415,5420,5424,5427,5438,5441,5491,5494,5496,5505,5514,5523,5529,5531,5538,5541,5544,5547,5549,5556,5560,5566,5570,5576,5580,5583,5587,5590,5592,5595,5601,5604,5606,5735],[11,4881,4883],{"id":4882},"seoda-crawling-nima","SEO’da crawling nima?",[16,4885,4886,4887,4890],{},"Qidiruv tizimi veb-sahifani tushunishi yoki uni reytingga qo‘shishi uchun, odatda, avval uni topishi va mazmunini olishi kerak. Bu jarayon ",[30,4888,4889],{},"crawling"," deb ataladi.",[16,4892,4893,4894,698,4897,1250,4900,4903,4904,4907,4908,991],{},"Qidiruv tizimlari URL’larni topish va ularning mazmunini so‘rab olish uchun ",[30,4895,4896],{},"crawler",[30,4898,4899],{},"bot",[30,4901,4902],{},"spider"," deb ataladigan avtomatlashtirilgan dasturlardan foydalanadi. Google’ning asosiy qidiruv crawleri ",[30,4905,4906],{},"Googlebot"," deb ataladi. U sahifalarni havolalar, sitemap’lar, avvaldan ma’lum URL’lar va boshqa signallar orqali topishi, so‘ng ularni keyingi qidiruv jarayonlariga uzatish uchun yuklab olishi mumkin. (",[37,4909,1966],{"href":4493,"rel":4910},[41],[16,4912,4913],{},"Crawling tashqaridan oddiy ko‘rinadi, ammo havolalar, robots.txt, serverlar, redirect’lar, JavaScript yoki URL arxitekturasidagi muammolar muhim sahifalarning samarali topilishiga xalaqit berishi mumkin.",[11,4915,25],{"id":24},[16,4917,4918],{},[30,4919,4920],{},"SEO’da crawling — qidiruv botlari internetdagi URL’larni topib, ularning mazmunini olish jarayoni.",[16,4922,4923],{},"Crawler URL’ni topadi, unga kirishga ruxsat bor-yo‘qligini tekshiradi, serverga so‘rov yuboradi, javobni oladi va sahifadan qo‘shimcha URL’larni topishi mumkin.",[16,4925,4926,4927,4929,4930,991],{},"Crawling sahifa albatta indexing qilinadi yoki yuqori o‘rinda chiqadi degani ",[30,4928,317],{},". U faqat sahifani keyingi qayta ishlash bosqichlari uchun mavjud qiladi. Google barcha crawl qilingan sahifalar ham oxir-oqibat indeksga kiritilmasligini aniq qayd etadi. (",[37,4931,1966],{"href":4493,"rel":4932},[41],[11,4934,4936],{"id":4935},"crawling-va-indexing","Crawling va indexing",[16,4938,4939],{},"Bu tushunchalar bir-biri bilan chambarchas bog‘liq, ammo ular bir xil narsa emas.",[48,4941,4942,4951],{},[51,4943,4944],{},[54,4945,4946,4948],{},[57,4947,599],{},[57,4949,4950],{},"Nima sodir bo‘ladi",[64,4952,4953,4963,4973,4982,4992],{},[54,4954,4955,4960],{},[69,4956,4957],{},[30,4958,4959],{},"Discovery",[69,4961,4962],{},"Qidiruv tizimi URL mavjudligini bilib oladi.",[54,4964,4965,4970],{},[69,4966,4967],{},[30,4968,4969],{},"Crawling",[69,4971,4972],{},"Crawler URL’ni so‘raydi va uning mazmunini oladi.",[54,4974,4975,4979],{},[69,4976,4977],{},[30,4978,71],{},[69,4980,4981],{},"Zarur bo‘lsa, crawler sahifani va JavaScript orqali yaratilgan kontentni qayta ishlaydi.",[54,4983,4984,4989],{},[69,4985,4986],{},[30,4987,4988],{},"Indexing",[69,4990,4991],{},"Qidiruv tizimlari kontentni tahlil qiladi va uni qidiruv indeksiga kiritish kerakmi hamda qanday kiritishni belgilaydi.",[54,4993,4994,4999],{},[69,4995,4996],{},[30,4997,4998],{},"Serving",[69,5000,5001],{},"Indeksga kiritilgan ma’lumot tegishli qidiruv natijalarida ko‘rsatilishi mumkin.",[16,5003,5004],{},"Shuning uchun sahifa topilgan, ammo crawl qilinmagan bo‘lishi mumkin; crawl qilingan, ammo indeksga kiritilmagan bo‘lishi mumkin; yoki indeksga kiritilgan bo‘lsa ham, ma’lum bir so‘rov bo‘yicha yuqori o‘rinda chiqmasligi mumkin.",[16,5006,5007],{},[164,5008,5009],{},"INTERNAL LINK: SEO’da indexing nima?",[11,5011,5013],{"id":5012},"crawling-qanday-ishlaydi","Crawling qanday ishlaydi?",[16,5015,5016],{},"Soddalashtirilgan crawling jarayoni quyidagicha:",[16,5018,5019],{},[30,5020,5021],{},"URL topiladi → crawling ruxsatlari tekshiriladi → HTTP so‘rov → server javobi → kontent qayta ishlanadi → havolalar topiladi → indexing tizimlari",[16,5023,5024],{},"Tasavvur qiling, Googlebot ushbu sahifani allaqachon biladi:",[16,5026,5027],{},[84,5028,5029],{},"https:\u002F\u002Fexample.com\u002Fblog\u002F",[16,5031,5032],{},"Sahifada standart HTML havola mavjud:",[154,5034,5037],{"className":156,"code":5035,"language":158,"meta":5036,"style":160},"\u003Ca href=\"\u002Fblog\u002Ftechnical-seo\u002F\">Technical SEO\u003C\u002Fa>\n","id=\"4ylbpc\"",[84,5038,5039],{"__ignoreMap":160},[164,5040,5041,5043,5045,5047,5049,5052,5054,5056],{"class":166,"line":167},[164,5042,171],{"class":170},[164,5044,37],{"class":174},[164,5046,343],{"class":178},[164,5048,182],{"class":170},[164,5050,5051],{"class":185},"\"\u002Fblog\u002Ftechnical-seo\u002F\"",[164,5053,351],{"class":170},[164,5055,37],{"class":174},[164,5057,194],{"class":170},[16,5059,5060,5061,5063,5064,5066,5067,991],{},"Google bu URL’ni ajratib olishi va crawl qilishi mumkin bo‘lgan URL’lar ro‘yxatiga qo‘shishi mumkin. Google crawlers ishonchli tarzda kuzatishi kerak bo‘lgan havolalar uchun ",[84,5062,400],{}," atributiga ega crawl qilinadigan ",[84,5065,396],{}," elementlaridan foydalanishni alohida tavsiya qiladi. (",[37,5068,1966],{"href":5069,"rel":5070},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Flinks-crawlable?utm_source=chatgpt.com",[41],[16,5072,5073],{},"Keyin crawler quyidagi URL’ni so‘rashi mumkin:",[16,5075,5076],{},[84,5077,5078],{},"https:\u002F\u002Fexample.com\u002Fblog\u002Ftechnical-seo\u002F",[16,5080,5081,5082,698,5085,5088,5089,5091,5092,5095],{},"Server ",[84,5083,5084],{},"200 OK",[84,5086,5087],{},"301"," kabi redirect, ",[84,5090,503],{}," kabi xato yoki ",[84,5093,5094],{},"503"," kabi server xatosi bilan javob berishi mumkin.",[16,5097,5098,5099,5102,5103,5106,5107,5110,5111,991],{},"Muvaffaqiyatli ",[84,5100,5101],{},"2xx"," javobi Google’ga olingan kontentni keyingi qayta ishlash bosqichlariga uzatish imkonini beradi, ammo bunday javobning o‘zi ham indexing’ni kafolatlamaydi. Doimiy ",[84,5104,5105],{},"5xx"," xatolari va ",[84,5108,5109],{},"429 Too Many Requests"," javoblari Google crawling tezligini kamaytirishiga olib kelishi mumkin. (",[37,5112,1966],{"href":5113,"rel":5114},"https:\u002F\u002Fdevelopers.google.com\u002Fcrawling\u002Fdocs\u002Ftroubleshooting\u002Fhttp-status-codes?authuser=19&utm_source=chatgpt.com",[41],[11,5116,5118],{"id":5117},"crawlerlar-urllarni-qanday-topadi","Crawler’lar URL’larni qanday topadi?",[16,5120,5121],{},"Qidiruv tizimlari har bir sahifani qo‘lda yuborishingizni talab qilmaydi.",[2028,5123,5125],{"id":5124},"ichki-va-tashqi-havolalar","Ichki va tashqi havolalar",[16,5127,5128,5129,991],{},"Havolalar sahifalarni topishning asosiy mexanizmlaridan biridir. Google hujjatlariga ko‘ra, Googlebot yangi URL’larni asosan o‘zi allaqachon biladigan sahifalardagi havolalar orqali topadi. (",[37,5130,1966],{"href":5131,"rel":5132},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fgooglebot?utm_source=chatgpt.com",[41],[16,5134,5135],{},"Shu sababli ichki linking faqat navigatsiya emas, balki technical SEO’ning ham bir qismidir.",[16,5137,5138,5139,4890],{},"Hech qanday crawl qilinadigan havola olib bormaydigan muhim sahifani crawler’lar topishi qiyinroq bo‘lishi mumkin. Bunday sahifalar odatda ",[30,5140,5141],{},"orphan pages",[16,5143,5144],{},[164,5145,5146],{},"INTERNAL LINK: SEO uchun ichki linking",[2028,5148,5150],{"id":5149},"xml-sitemaps","XML Sitemaps",[16,5152,5153],{},"XML sitemap qidiruv tizimlariga siz muhim deb hisoblagan URL’larning tuzilgan ro‘yxatini beradi.",[16,5155,1265],{},[154,5157,5162],{"className":5158,"code":5159,"language":5160,"meta":5161,"style":160},"language-xml shiki shiki-themes github-light github-dark","\u003Curl>\n  \u003Cloc>https:\u002F\u002Fexample.com\u002Fblog\u002Ftechnical-seo\u002F\u003C\u002Floc>\n\u003C\u002Furl>\n","xml","id=\"semf3s\"",[84,5163,5164,5169,5174],{"__ignoreMap":160},[164,5165,5166],{"class":166,"line":167},[164,5167,5168],{},"\u003Curl>\n",[164,5170,5171],{"class":166,"line":197},[164,5172,5173],{},"  \u003Cloc>https:\u002F\u002Fexample.com\u002Fblog\u002Ftechnical-seo\u002F\u003C\u002Floc>\n",[164,5175,5176],{"class":166,"line":1187},[164,5177,5178],{},"\u003C\u002Furl>\n",[16,5180,5181,5182,5185,5186,1250,5189,5192,5193,991],{},"Google sitemap yuborilishini har bir ko‘rsatilgan URL albatta crawl yoki indexing qilinadi degan buyruq yoki kafolat emas, balki ",[30,5183,5184],{},"hint",", ya’ni signal sifatida tasvirlaydi. Bitta sitemap ",[30,5187,5188],{},"50 000 URL",[30,5190,5191],{},"50 MB siqilmagan hajm"," bilan cheklanadi; kattaroq saytlar bir nechta sitemap va sitemap index’dan foydalanishi mumkin. (",[37,5194,1966],{"href":5195,"rel":5196},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fsitemaps\u002Fbuild-sitemap?authuser=77&utm_source=chatgpt.com",[41],[16,5198,5199],{},[164,5200,5201],{},"INTERNAL LINK: XML Sitemaps Explained",[11,5203,5205],{"id":5204},"robotstxt-va-crawling","robots.txt va crawling",[16,5207,5208,5210],{},[84,5209,1066],{}," fayli ushbu protokolga amal qiladigan crawler’larga qaysi URL yo‘llarini so‘rash mumkin yoki mumkin emasligini bildirishi mumkin.",[16,5212,1265],{},[154,5214,5217],{"className":1152,"code":5215,"language":1154,"meta":5216,"style":160},"User-agent: *\nDisallow: \u002Fadmin\u002F\n","id=\"scs3v9\"",[84,5218,5219,5223],{"__ignoreMap":160},[164,5220,5221],{"class":166,"line":167},[164,5222,1276],{},[164,5224,5225],{"class":166,"line":197},[164,5226,5227],{},"Disallow: \u002Fadmin\u002F\n",[16,5229,5230,5231,5233,5234,991],{},"Robots Exclusion Protocol 2022-yil sentabrda ",[30,5232,1793],{}," sifatida standartlashtirilgan. Spetsifikatsiya crawler’larni avtomatlashtirilgan mijozlar sifatida ta’riflaydi va robots.txt qoidalari access control yoki authorization tizimi emasligini aniq ko‘rsatadi. (",[37,5235,1262],{"href":1260,"rel":5236},[41],[16,5238,5239],{},"Bu muhim farq.",[16,5241,5242],{},"Agar maxfiy ma’lumot yopiq qolishi kerak bo‘lsa, authentication yoki boshqa haqiqiy access-control mexanizmidan foydalaning. robots.txt’ga tayanmang.",[2028,5244,5246],{"id":5245},"robotstxt-noindex-emas","robots.txt — noindex emas",[16,5248,5249],{},"Keng tarqalgan SEO xatolaridan biri quyidagicha o‘ylash:",[4499,5251,5252],{},[16,5253,5254],{},"“Agar URL’ni robots.txt orqali bloklasam, Google uni indexing qila olmaydi.”",[16,5256,5257],{},"Bu har doim ham to‘g‘ri emas.",[16,5259,5260,5261,3231,5263,991],{},"Google bloklangan URL’ni havolalar orqali topishi va uning kontentini crawl qilmasdan turib ham URL’ni qidiruv natijalarida ko‘rsatishi mumkin. Shuning uchun Google ochiq sahifaning Google Search’da ko‘rinishini oldini olish kerak bo‘lsa, ",[84,5262,448],{},[37,5264,1966],{"href":5265,"rel":5266},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Frobots\u002Fintro?authuser=1&utm_source=chatgpt.com",[41],[16,5268,5269,5270,5272],{},"Ammo bunda muhim bir jihat bor: Google ",[84,5271,448],{}," direktivasini ko‘rishi uchun sahifani crawl qila olishi kerak.",[16,5274,5275],{},"Shuning uchun quyidagi kombinatsiya aks ta’sir qilishi mumkin:",[154,5277,5280],{"className":1152,"code":5278,"language":1154,"meta":5279,"style":160},"Disallow: \u002Fprivate-page\u002F\n","id=\"915lhr\"",[84,5281,5282],{"__ignoreMap":160},[164,5283,5284],{"class":166,"line":167},[164,5285,5278],{},[16,5287,1357],{},[154,5289,5292],{"className":156,"code":5290,"language":158,"meta":5291,"style":160},"\u003Cmeta name=\"robots\" content=\"noindex\">\n","id=\"irqjq0\"",[84,5293,5294],{"__ignoreMap":160},[164,5295,5296,5298,5301,5304,5306,5309,5312,5314,5317],{"class":166,"line":167},[164,5297,171],{"class":170},[164,5299,5300],{"class":174},"meta",[164,5302,5303],{"class":178}," name",[164,5305,182],{"class":170},[164,5307,5308],{"class":185},"\"robots\"",[164,5310,5311],{"class":178}," content",[164,5313,182],{"class":170},[164,5315,5316],{"class":185},"\"noindex\"",[164,5318,194],{"class":170},[16,5320,5321,5322,5324,5325,991],{},"Agar crawling bloklangan bo‘lsa, Googlebot ",[84,5323,448],{}," ko‘rsatmasi joylashgan HTML’ni umuman olmasligi mumkin. (",[37,5326,1966],{"href":5327,"rel":5328},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fblock-indexing?utm_source=chatgpt.com",[41],[16,5330,5331],{},[164,5332,5333],{},"INTERNAL LINK: robots.txt Explained",[11,5335,5337],{"id":5336},"javascript-va-rendering","JavaScript va rendering",[16,5339,5340],{},"Zamonaviy saytlar muhim kontentning faqat bir qismini dastlabki HTML’da berishi, qolgan qismini esa JavaScript orqali yaratishi mumkin.",[16,5342,5343,5344,991],{},"Google o‘z hujjatlarida sahifalarni qayta ishlash davomida zamonaviy Chrome versiyasi yordamida ularni render qilishi va JavaScript’ni bajarishi mumkinligini ko‘rsatadi. Rendering muhim, chunki JavaScript orqali qo‘shilgan kontent yoki havolalar dastlabki HTML javobida mavjud bo‘lmasligi mumkin. (",[37,5345,1966],{"href":4493,"rel":5346},[41],[16,5348,5349,5350,991],{},"Biroq JavaScript rendering saytni texnik jihatdan crawling uchun ochiq qilish zaruratini yo‘q qilmaydi. Muhim havolalar hali ham standart link markup’dan foydalanishi, zarur resurslar ochiq qolishi, ishlab chiquvchilar esa Google aslida nimani olayotgani va render qilayotganini tekshirishi kerak. (",[37,5351,1966],{"href":5069,"rel":5352},[41],[16,5354,5355],{},[164,5356,5357],{},"INTERNAL LINK: JavaScript SEO asoslari",[11,5359,5361],{"id":5360},"crawl-budget","Crawl Budget",[16,5363,5364],{},"Qidiruv tizimlari internetdagi har bir URL’ni doimiy ravishda crawl qila olmaydi.",[16,5366,5367,5368,5371,5372,5375,5376,991],{},"Google ",[30,5369,5370],{},"crawl budget","’ni uning crawling tizimlari asosan crawl capacity va crawl demand asosida ",[845,5373,5374],{},"crawl qila oladigan va crawl qilishni xohlaydigan"," URL’lar sifatida tariflaydi. (",[37,5377,1966],{"href":5378,"rel":5379},"https:\u002F\u002Fdevelopers.google.com\u002Fcrawling\u002Fdocs\u002Fcrawl-budget?utm_source=chatgpt.com",[41],[16,5381,5382],{},"Ko‘pchilik oddiy saytlar uchun crawl budget agressiv optimizatsiyani talab qiladigan masala emas.",[16,5384,5385],{},"Google’ning amaldagi ko‘rsatmalari asosan juda katta yoki tez-tez o‘zgaradigan saytlarga qaratilgan, jumladan taxminan:",[3335,5387,5388,5394,5400],{},[841,5389,5390,5393],{},[30,5391,5392],{},"1 million yoki undan ko‘p noyob sahifaga"," ega va o‘rtacha tezlikda o‘zgaradigan saytlar;",[841,5395,5396,5399],{},[30,5397,5398],{},"10 000 yoki undan ko‘p noyob sahifaga"," ega va juda tez o‘zgaradigan saytlar;",[841,5401,5402,5405],{},[30,5403,5404],{},"Discovered – currently not indexed"," holatidagi ko‘plab URL’larga ega saytlar.",[16,5407,5408,5409,991],{},"Google bu raqamlar aniq chegaralar emas, balki taxminiy tasniflar ekanini ochiq aytadi. (",[37,5410,1966],{"href":5378,"rel":5411},[41],[16,5413,5414],{},"Yirik ecommerce saytlar, marketplace’lar, nashriyotlar va faceted navigation ishlatadigan saytlar filterlar, saralash parametrlari, kalendarlar, session ID’lar yoki dublikatlar orqali juda katta URL maydonlarini yaratishi mumkin. Bunday vaziyatlarda crawling samaradorligi ancha muhim bo‘lib qoladi.",[16,5416,5417],{},[164,5418,5419],{},"INTERNAL LINK: Crawl Budget Explained",[11,5421,5423],{"id":5422},"crawling-muammolarini-aniqlash","Crawling muammolarini aniqlash",[16,5425,5426],{},"Agar muhim sahifa qidiruvda ko‘rinmayotgan bo‘lsa, avval muammo haqiqatan ham crawling bilan bog‘liqmi yoki yo‘qmi, shuni aniqlash kerak.",[16,5428,5429,5430,5433,5434,991],{},"URL’ni ",[30,5431,5432],{},"Google Search Console’dagi URL Inspection tool"," orqali tekshiring. Google hujjatlariga ko‘ra, bu vosita joriy indexing holatini ko‘rsatishi, live URL’ni test qilishi, crawling so‘rovini yuborishi va yuklangan resurslar haqida ma’lumot berishi mumkin. (",[37,5435,1966],{"href":5436,"rel":5437},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fmonitor-debug\u002Fsearch-console-start?utm_source=chatgpt.com",[41],[16,5439,5440],{},"Keyin quyidagilarni tekshiring:",[838,5442,5443,5448,5453,5462,5474,5479,5485],{},[841,5444,5445,5447],{},[30,5446,4959],{}," — sahifaga ichki havola bormi yoki u sitemap’ga kiritilganmi?",[841,5449,5450,5452],{},[30,5451,1066],{}," — Googlebot tasodifan bloklanmaganmi?",[841,5454,5455,5458,5459,5461],{},[30,5456,5457],{},"HTTP response"," — URL kutilgan ",[84,5460,106],{},", redirect yoki xato javobini qaytaryaptimi?",[841,5463,5464,5467,5468,1250,5471,5473],{},[30,5465,5466],{},"Server availability"," — DNS, tarmoq, timeout, ",[84,5469,5470],{},"429",[84,5472,5105],{}," xatolari yuz berayaptimi?",[841,5475,5476,5478],{},[30,5477,71],{}," — JavaScript qayta ishlangandan keyin muhim kontent mavjudmi?",[841,5480,5481,5484],{},[30,5482,5483],{},"URL duplication"," — filterlar yoki parametrlar keraksiz URL variantlarini yaratmayaptimi?",[841,5486,5487,5490],{},[30,5488,5489],{},"Server logs"," — Googlebot bu URL’ni haqiqatan ham so‘raganmi?",[16,5492,5493],{},"Crawler darajasidagi diagnostika uchun server access log’lari ayniqsa foydali, chunki ular crawler nima qilgan deb taxmin qilayotganingizni emas, balki amalda nimalar so‘ralganini ko‘rsatadi.",[11,5495,2651],{"id":2650},[16,5497,5498,5501,5502,991],{},[30,5499,5500],{},"“Sitemap crawling’ni kafolatlaydi.”","\nYo‘q. Google sitemap’larni hint sifatida ko‘radi. (",[37,5503,1966],{"href":5195,"rel":5504},[41],[16,5506,5507,5510,5511,991],{},[30,5508,5509],{},"“Crawl qilingan bo‘lsa, demak indexing qilingan.”","\nYo‘q. Crawl qilingan kontent hali ham keyingi qayta ishlash va indexing qarorlaridan o‘tishi kerak. (",[37,5512,1966],{"href":5378,"rel":5513},[41],[16,5515,5516,5519,5520,991],{},[30,5517,5518],{},"“robots.txt sahifalarni Google’dan olib tashlaydi.”","\nHar doim ham emas. U birinchi navbatda crawling’ni boshqaradi. (",[37,5521,1966],{"href":5265,"rel":5522},[41],[16,5524,5525,5528],{},[30,5526,5527],{},"“Qanchalik ko‘p crawling bo‘lsa, SEO shunchalik yaxshi bo‘ladi.”","\nHar doim ham emas. Maqsad crawler so‘rovlarini maksimal darajaga chiqarish emas, balki foydali va muhim URL’larga samarali kirishni ta’minlashdir.",[11,5530,742],{"id":741},[16,5532,5533,5534,5537],{},"Ko‘pchilik saytlar uchun crawling’ni manipulyatsiya qilinadigan jarayon sifatida emas, balki ",[30,5535,5536],{},"kirish va arxitektura masalasi"," sifatida ko‘rish kerak.",[16,5539,5540],{},"Muhim sahifalarni standart ichki havolalar orqali topiladigan qiling, sitemap’ni to‘g‘ri va dolzarb saqlang, to‘g‘ri HTTP javoblarini qaytaring, kerakli sahifa yoki resurslarni tasodifan bloklamang va keraksiz URL variantlarini nazorat qiling.",[16,5542,5543],{},"Keyin natijani Search Console va server log’lari orqali tekshiring.",[16,5545,5546],{},"Crawl budget optimizatsiyasiga jiddiy sarmoya faqat sayt hajmi yoki URL yaratish mexanizmi bunga haqiqiy sabab bo‘lgandagina ma’noli bo‘ladi.",[11,5548,759],{"id":758},[761,5550,5552,5553,991],{"id":5551},"qidiruv-tizimlari-kontentni-toliq-qayta-ishlashi-va-indexing-qilishi-uchun-odatda-avval-uni-olishlari-kerak-bloklangan-url-ayrim-hollarda-tashqi-malumotlarga-asoslanib-faqat-url-korinishidagi-natija-sifatida-chiqishi-mumkin-ammo-crawler-sahifani-ola-olmasa-uning-kontenti-odatdagi-tarzda-qayta-ishlanmaydi-developersgooglecom","Qidiruv tizimlari kontentni to‘liq qayta ishlashi va indexing qilishi uchun odatda avval uni olishlari kerak. Bloklangan URL ayrim hollarda tashqi ma’lumotlarga asoslanib faqat URL ko‘rinishidagi natija sifatida chiqishi mumkin, ammo crawler sahifani ola olmasa, uning kontenti odatdagi tarzda qayta ishlanmaydi. (",[37,5554,1966],{"href":5265,"rel":5555},[41],[761,5557,5559],{"id":5558},"google-saytni-qanchalik-tez-tez-crawl-qiladi","Google saytni qanchalik tez-tez crawl qiladi?",[16,5561,5562,5563,991],{},"Universal jadval mavjud emas. Googlebot nimani crawl qilish, qanchalik tez-tez va nechta URL so‘rashni algoritmik tarzda belgilaydi, shu bilan birga serverlarni ortiqcha yuklamaslikka harakat qiladi. (",[37,5564,1966],{"href":4493,"rel":5565},[41],[761,5567,5569],{"id":5568},"sitemap-yuborish-google-crawlingini-tezlashtiradimi","Sitemap yuborish Google crawling’ini tezlashtiradimi?",[16,5571,5572,5573,991],{},"Sitemap sahifalarni topishni yaxshilashi mumkin, ayniqsa yangi, yangilangan, katta yoki topish qiyin bo‘lgan URL to‘plamlari uchun. Ammo uni yuborish darhol crawling bo‘lishini kafolatlamaydi. (",[37,5574,1966],{"href":5195,"rel":5575},[41],[761,5577,5579],{"id":5578},"har-bir-sahifa-crawling-uchun-ochiq-bolishi-kerakmi","Har bir sahifa crawling uchun ochiq bo‘lishi kerakmi?",[16,5581,5582],{},"Yo‘q. Admin URL’lari, takroriy URL kombinatsiyalari, ichki qidiruv natijalari va boshqa qiymati past URL maydonlarini sayt arxitekturasiga qarab cheklash mumkin. Ammo organik qidiruvda ko‘rinishi kerak bo‘lgan sahifalar, odatda, qidiruv crawler’lari uchun ochiq bo‘lishi kerak.",[761,5584,5586],{"id":5585},"crawling-ranking-faktorimi","Crawling ranking faktorimi?",[16,5588,5589],{},"Crawling birinchi navbatda qidiruv tizimlari kontentni olishi va qayta ishlashi uchun zarur shartdir. Uni hujjatlashtirilgan ranking signali bilan adashtirmaslik kerak. Sahifaning tez-tez crawl qilinishi o‘z-o‘zidan uning yuqoriroq ranking qilishini anglatmaydi.",[11,5591,826],{"id":825},[16,5593,5594],{},"Crawling — qidiruv tizimining ma’lumotni olish bosqichidir.",[16,5596,5597,5598,5600],{},"Qidiruv crawler’lari URL’larni topadi, serverlardan so‘raydi, javoblarni qayta ishlaydi va keyingi tekshirish uchun yangi URL’larni aniqlaydi. Yaxshi technical SEO bu jarayonni oldindan tushunarli qiladi: muhim kontentni topish va olish oson bo‘ladi, keraksiz URL maydonlari resurslarni behuda sarflamaydi, robots.txt va ",[84,5599,448],{}," kabi direktivalar esa o‘z vazifasiga mos ishlatiladi.",[16,5602,5603],{},"Agar crawling ishlamasa, qidiruv tizimining keyingi bosqichlari zarur kontentni umuman olmasligi mumkin.",[11,5605,836],{"id":835},[838,5607,5608,5621,5633,5645,5658,5670,5683,5695,5708,5720],{},[841,5609,5610,5613,5614,1719,5618,991],{},[30,5611,5612],{},"Google Search Central — In-Depth Guide to How Google Search Works."," Google for Developers. ",[37,5615,5617],{"href":4493,"rel":5616},[41],"How Google Search Works",[37,5619,1966],{"href":4493,"rel":5620},[41],[841,5622,5623,5613,5626,1719,5630,991],{},[30,5624,5625],{},"Google Search Central — Googlebot.",[37,5627,5629],{"href":5131,"rel":5628},[41],"Googlebot documentation",[37,5631,1966],{"href":5131,"rel":5632},[41],[841,5634,5635,5613,5638,1719,5642,991],{},[30,5636,5637],{},"Google Crawling Infrastructure — Optimize Your Crawl Budget.",[37,5639,5641],{"href":5378,"rel":5640},[41],"Crawl budget documentation",[37,5643,1966],{"href":5378,"rel":5644},[41],[841,5646,5647,5613,5650,1719,5655,991],{},[30,5648,5649],{},"Google Search Central — Introduction to robots.txt.",[37,5651,5654],{"href":5652,"rel":5653},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Frobots\u002Fintro?utm_source=chatgpt.com",[41],"robots.txt introduction",[37,5656,1966],{"href":5265,"rel":5657},[41],[841,5659,5660,5663,5664,1719,5667,991],{},[30,5661,5662],{},"Koster, M.; Illyes, G.; Zeller, H.; Sassman, L. — RFC 9309: Robots Exclusion Protocol."," IETF, September 2022. ",[37,5665,1793],{"href":1260,"rel":5666},[41],[37,5668,1262],{"href":1260,"rel":5669},[41],[841,5671,5672,5613,5675,1719,5680,991],{},[30,5673,5674],{},"Google Search Central — Build and Submit a Sitemap.",[37,5676,5679],{"href":5677,"rel":5678},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fsitemaps\u002Fbuild-sitemap?utm_source=chatgpt.com",[41],"Google sitemap documentation",[37,5681,1966],{"href":5195,"rel":5682},[41],[841,5684,5685,5613,5688,1719,5692,991],{},[30,5686,5687],{},"Google Search Central — Link Best Practices for Google.",[37,5689,5691],{"href":5069,"rel":5690},[41],"Crawlable links documentation",[37,5693,1966],{"href":5069,"rel":5694},[41],[841,5696,5697,5613,5700,1719,5705,991],{},[30,5698,5699],{},"Google Crawling Infrastructure — How HTTP Status Codes Affect Google's Crawlers.",[37,5701,5704],{"href":5702,"rel":5703},"https:\u002F\u002Fdevelopers.google.com\u002Fcrawling\u002Fdocs\u002Ftroubleshooting\u002Fhttp-status-codes?utm_source=chatgpt.com",[41],"HTTP status code documentation",[37,5706,1966],{"href":5113,"rel":5707},[41],[841,5709,5710,5613,5713,1719,5717,991],{},[30,5711,5712],{},"Google Search Central — Block Search Indexing with noindex.",[37,5714,5716],{"href":5327,"rel":5715},[41],"noindex documentation",[37,5718,1966],{"href":5327,"rel":5719},[41],[841,5721,5722,5725,5726,1719,5731,991],{},[30,5723,5724],{},"Sitemaps.org — Sitemaps XML Format."," ",[37,5727,5730],{"href":5728,"rel":5729},"https:\u002F\u002Fwww.sitemaps.org\u002Fprotocol.html?utm_source=chatgpt.com",[41],"Sitemaps protocol",[37,5732,5734],{"href":5728,"rel":5733},[41],"sitemaps.org",[915,5736,917],{},{"title":160,"searchDepth":197,"depth":197,"links":5738},[5739,5740,5741,5742,5743,5747,5750,5751,5752,5753,5754,5755,5756,5757],{"id":4882,"depth":197,"text":4883},{"id":24,"depth":197,"text":25},{"id":4935,"depth":197,"text":4936},{"id":5012,"depth":197,"text":5013},{"id":5117,"depth":197,"text":5118,"children":5744},[5745,5746],{"id":5124,"depth":1187,"text":5125},{"id":5149,"depth":1187,"text":5150},{"id":5204,"depth":197,"text":5205,"children":5748},[5749],{"id":5245,"depth":1187,"text":5246},{"id":5336,"depth":197,"text":5337},{"id":5360,"depth":197,"text":5361},{"id":5422,"depth":197,"text":5423},{"id":2650,"depth":197,"text":2651},{"id":741,"depth":197,"text":742},{"id":758,"depth":197,"text":759},{"id":825,"depth":197,"text":826},{"id":835,"depth":197,"text":836},"Texnik SEO","SEO’da crawling nima ekanini, qidiruv botlari URL’larni qanday topib yuklashini, robots.txt, sitemap va JavaScript crawling’ga qanday ta’sir qilishini hamda crawling muammolarini qanday aniqlashni bilib oling.","\u002Fcrawling-in-seo.png","Seo da crawling tushunchasi",{},"\u002Fblog\u002Fuz\u002Fseo-da-crawling",{"title":4877,"description":5759},"seoda-crawling","blog\u002Fuz\u002Fseo-da-crawling","crawling-in-seo","NfoGJIdbSXShkfYAtB51c6q1BnTPcOgwamSqn2n2BVg",{"id":5770,"title":5771,"author":6,"body":5772,"category":5758,"description":6596,"draft":939,"extension":940,"featured":941,"image":6597,"imageAlt":5777,"locale":944,"meta":6598,"navigation":941,"path":6599,"publishedAt":1822,"seo":6600,"slug":6601,"stem":6602,"translationKey":6603,"updatedAt":1822,"__hash__":6604},"blog\u002Fblog\u002Fuz\u002Furl-aniqlash.md","Google yangi URL’larni qanday topadi: havolalar, sitemap va crawling",{"type":8,"value":5773,"toc":6579},[5774,5778,5781,5791,5793,5808,5811,5816,5819,5821,5914,5920,5924,5930,5933,5938,5964,5971,5977,5980,5985,5990,5994,5997,6006,6032,6035,6065,6071,6077,6082,6086,6089,6091,6115,6122,6125,6132,6137,6146,6149,6154,6158,6161,6164,6171,6177,6182,6191,6194,6201,6204,6210,6214,6220,6222,6228,6235,6244,6249,6253,6256,6290,6293,6300,6303,6307,6310,6317,6323,6345,6349,6352,6385,6392,6394,6403,6406,6409,6416,6419,6421,6425,6431,6435,6441,6445,6448,6452,6458,6462,6468,6470,6473,6476,6482,6484,6577],[11,5775,5777],{"id":5776},"google-yangi-urllarni-qanday-topadi","Google yangi URL’larni qanday topadi",[16,5779,5780],{},"Sahifani internetga joylash Google uning mavjudligini avtomatik ravishda biladi degani emas. Google sahifani crawling qilishi, tushunishi yoki indexing qilishi uchun avval uning URL manzilini topishi kerak.",[16,5782,5783,5784,5787,5788,991],{},"Google bu jarayonni ",[30,5785,5786],{},"URL discovery"," deb ataydi. Google hujjatlariga ko‘ra, yangi URL’lar odatda Google allaqachon biladigan sahifalardagi havolalar va yuborilgan sitemap’lar orqali topiladi. Shundan so‘ng Googlebot topilgan URL’ni crawling jarayoniga qo‘shishi mumkin. Ammo URL topilgani uning albatta crawling qilinishi, indexing qilinishi yoki qidiruv natijalarida ko‘rsatilishini anglatmaydi. (",[37,5789,1966],{"href":4493,"rel":5790},[41],[11,5792,25],{"id":24},[16,5794,5795,5796,5799,5800,5803,5804,991],{},"Google yangi URL’larni asosan ",[30,5797,5798],{},"ilgari topilgan sahifalardagi havolalarni kuzatish"," va sayt egalari taqdim etgan ",[30,5801,5802],{},"sitemap’larni o‘qish"," orqali topadi. Googlebot redirect’larni qayta ishlash vaqtida yoki JavaScript orqali yaratilgan havolalar crawlable shaklda bo‘lsa, ular orqali ham yangi URL’larni uchratishi mumkin. (",[37,5805,1966],{"href":5806,"rel":5807},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Ffundamentals\u002Fget-started-developers?utm_source=chatgpt.com",[41],[16,5809,5810],{},"Muhim farq quyidagicha:",[16,5812,5813],{},[30,5814,5815],{},"Discovery → Crawling → Indexing → Serving",[16,5817,5818],{},"Bular alohida bosqichlar. Topilgan URL — bu Google mavjudligini biladigan URL, xolos. Bu hali sahifa indeksga qo‘shilgan degani emas.",[11,5820,46],{"id":45},[48,5822,5823,5836],{},[51,5824,5825],{},[54,5826,5827,5830,5833],{},[57,5828,5829],{},"Mexanizm",[57,5831,5832],{},"Google’ga URL’ni topishga yordam beradimi?",[57,5834,5835],{},"Muhim cheklov",[64,5837,5838,5849,5859,5869,5879,5889,5903],{},[54,5839,5840,5843,5846],{},[69,5841,5842],{},"Internal link",[69,5844,5845],{},"Ha",[69,5847,5848],{},"Havola crawlable bo‘lishi kerak",[54,5850,5851,5854,5856],{},[69,5852,5853],{},"External link",[69,5855,5845],{},[69,5857,5858],{},"Google havola joylashgan sahifani uchratishi kerak",[54,5860,5861,5864,5866],{},[69,5862,5863],{},"XML sitemap",[69,5865,5845],{},[69,5867,5868],{},"Sitemap — signal, kafolat emas",[54,5870,5871,5874,5876],{},[69,5872,5873],{},"RSS\u002FAtom feed",[69,5875,5845],{},[69,5877,5878],{},"Odatda yaqinda chiqarilgan kontentni qamrab oladi",[54,5880,5881,5884,5886],{},[69,5882,5883],{},"Redirect",[69,5885,5845],{},[69,5887,5888],{},"Googlebot URL’lar orasida o‘tayotganda target URL’ni topishi mumkin",[54,5890,5891,5894,5896],{},[69,5892,5893],{},"JavaScript orqali yaratilgan havola",[69,5895,5845],{},[69,5897,5898,5899,5902],{},"Yakunda crawlable ",[84,5900,5901],{},"\u003Ca href>"," havola hosil qilishi kerak",[54,5904,5905,5908,5911],{},[69,5906,5907],{},"Search Console request",[69,5909,5910],{},"Ha, siz boshqaradigan URL’lar uchun",[69,5912,5913],{},"Crawling so‘rovi indexing’ni kafolatlamaydi",[16,5915,5916,5917,991],{},"Google har bir web sahifani o‘z ichiga oladigan yagona markaziy registr yuritmasligini aniq aytadi. Buning o‘rniga uning crawler’lari internet bo‘ylab yangi va yangilangan URL’larni doimiy ravishda topib boradi. (",[37,5918,1966],{"href":4493,"rel":5919},[41],[11,5921,5923],{"id":5922},"havolalar-asosiy-discovery-yoli","Havolalar — asosiy discovery yo‘li",[16,5925,5926,5927,991],{},"Googlebot yangi URL’larni asosan Google allaqachon biladigan sahifalarga joylashtirilgan havolalar orqali topadi. Google hujjatlarida oddiy misol keltiriladi: category yoki hub sahifa yangi chop etilgan blog maqolasiga havola beradi va shu orqali Google yangi URL’ni topishi mumkin. (",[37,5928,1966],{"href":4493,"rel":5929},[41],[16,5931,5932],{},"Bu tamoyil internal va external havolalarga bir xil tarzda tegishli.",[16,5934,5935,5937],{},[30,5936,5842],{}," saytingizdagi bir sahifadan boshqa sahifaga olib boradi:",[154,5939,5942],{"className":156,"code":5940,"language":158,"meta":5941,"style":160},"\u003Ca href=\"\u002Fguides\u002Ftechnical-seo\">Technical SEO Guide\u003C\u002Fa>\n","id=\"j6zinw\"",[84,5943,5944],{"__ignoreMap":160},[164,5945,5946,5948,5950,5952,5954,5957,5960,5962],{"class":166,"line":167},[164,5947,171],{"class":170},[164,5949,37],{"class":174},[164,5951,343],{"class":178},[164,5953,182],{"class":170},[164,5955,5956],{"class":185},"\"\u002Fguides\u002Ftechnical-seo\"",[164,5958,5959],{"class":170},">Technical SEO Guide\u003C\u002F",[164,5961,37],{"class":174},[164,5963,194],{"class":170},[16,5965,5966,5967,5970],{},"Boshqa saytdagi ",[30,5968,5969],{},"external link"," ham umumiy crawling jarayoni orqali sizning URL’ingizni Google’ga ko‘rsatishi mumkin.",[16,5972,5973,5974,991],{},"Muhim sahifalar uchun Google har bir sahifaga saytdagi kamida yana bitta sahifadan havola berilganiga ishonch hosil qilishni tavsiya qiladi. (",[37,5975,1966],{"href":406,"rel":5976},[41],[16,5978,5979],{},"Shuning uchun sayt arxitekturasi discovery uchun muhim. Sahifa serverda to‘liq ishlayotgan bo‘lishi mumkin, ammo Google crawl qila oladigan hech qanday sahifa unga havola bermasa, Google uchun uni topish qiyinlashadi.",[16,5981,5982,5983,4890],{},"Muhim internal link’lari bo‘lmagan sahifalar odatda ",[30,5984,5141],{},[16,5986,5987],{},[164,5988,5989],{},"INTERNAL LINK: SEO uchun ichki havolalar",[11,5991,5993],{"id":5992},"havolalar-crawlable-bolishi-kerak","Havolalar crawlable bo‘lishi kerak",[16,5995,5996],{},"Har bir bosiladigan interfeys elementi Google ishonchli tarzda topa oladigan havola bo‘lavermaydi.",[16,5998,5999,6000,6002,6003,6005],{},"Google eng ishonchli tuzilma ",[84,6001,400],{}," atributiga ega HTML ",[84,6004,396],{}," elementi ekanini aytadi:",[154,6007,6010],{"className":156,"code":6008,"language":158,"meta":6009,"style":160},"\u003Ca href=\"\u002Fservices\u002Fseo\">SEO Services\u003C\u002Fa>\n","id=\"7zz182\"",[84,6011,6012],{"__ignoreMap":160},[164,6013,6014,6016,6018,6020,6022,6025,6028,6030],{"class":166,"line":167},[164,6015,171],{"class":170},[164,6017,37],{"class":174},[164,6019,343],{"class":178},[164,6021,182],{"class":170},[164,6023,6024],{"class":185},"\"\u002Fservices\u002Fseo\"",[164,6026,6027],{"class":170},">SEO Services\u003C\u002F",[164,6029,37],{"class":174},[164,6031,194],{"class":170},[16,6033,6034],{},"Faqat JavaScript event handler’lariga tayangan variantlar kamroq ishonchli:",[154,6036,6039],{"className":156,"code":6037,"language":158,"meta":6038,"style":160},"\u003Cspan onclick=\"openPage('\u002Fservices\u002Fseo')\">SEO Services\u003C\u002Fspan>\n","id=\"ur8lou\"",[84,6040,6041],{"__ignoreMap":160},[164,6042,6043,6045,6047,6049,6051,6053,6056,6059,6061,6063],{"class":166,"line":167},[164,6044,171],{"class":170},[164,6046,164],{"class":174},[164,6048,373],{"class":178},[164,6050,182],{"class":170},[164,6052,378],{"class":185},[164,6054,6055],{"class":178},"openPage",[164,6057,6058],{"class":185},"('\u002Fservices\u002Fseo')\"",[164,6060,6027],{"class":170},[164,6062,164],{"class":174},[164,6064,194],{"class":170},[16,6066,6067,6068,991],{},"Google JavaScript’ni bajara oladi va JavaScript rendered DOM ichiga havolalar qo‘sha oladi. Shunga qaramay, Google bunday havolalarni crawlable link bo‘yicha o‘z ko‘rsatmalariga mos ravishda yaratishni tavsiya qiladi. (",[37,6069,1966],{"href":406,"rel":6070},[41],[16,6072,6073,6074,991],{},"JavaScript’dan keng foydalanadigan ilovalarda alohida qidiruv natijasi sifatida ko‘rinishi kerak bo‘lgan har bir kontent qismi o‘z URL’iga ega bo‘lishi kerak. (",[37,6075,1966],{"href":5806,"rel":6076},[41],[16,6078,6079],{},[164,6080,6081],{},"INTERNAL LINK: JavaScript SEO",[11,6083,6085],{"id":6084},"sitemap-googlega-urllarni-topishga-yordam-beradi","Sitemap Google’ga URL’larni topishga yordam beradi",[16,6087,6088],{},"Sitemap Google’ga siz muhim deb hisoblaydigan URL’larning tartibli ro‘yxatini beradi.",[16,6090,1265],{},[154,6092,6095],{"className":5158,"code":6093,"language":5160,"meta":6094,"style":160},"\u003Curl>\n  \u003Cloc>https:\u002F\u002Fexample.com\u002Fblog\u002Fnew-article\u003C\u002Floc>\n  \u003Clastmod>2026-09-20\u003C\u002Flastmod>\n\u003C\u002Furl>\n","id=\"hd75cu\"",[84,6096,6097,6101,6106,6111],{"__ignoreMap":160},[164,6098,6099],{"class":166,"line":167},[164,6100,5168],{},[164,6102,6103],{"class":166,"line":197},[164,6104,6105],{},"  \u003Cloc>https:\u002F\u002Fexample.com\u002Fblog\u002Fnew-article\u003C\u002Floc>\n",[164,6107,6108],{"class":166,"line":1187},[164,6109,6110],{},"  \u003Clastmod>2026-09-20\u003C\u002Flastmod>\n",[164,6112,6113],{"class":166,"line":1193},[164,6114,5178],{},[16,6116,6117,6118,991],{},"Google sitemap’larni, ayniqsa, katta saytlar, yaqinda ishga tushirilgan saytlar, external link’lari kam bo‘lgan saytlar hamda maxsus media yoki yangilik kontentiga ega resurslar uchun muhim discovery mexanizmi sifatida ta’riflaydi. (",[37,6119,1966],{"href":6120,"rel":6121},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fsitemaps\u002Foverview?authuser=1&utm_source=chatgpt.com",[41],[16,6123,6124],{},"Sitemap sahifa odatiy link crawling orqali tez topilmasligi mumkin bo‘lgan holatlarda ayniqsa foydali.",[16,6126,6127,6128,6131],{},"Ammo sitemap yuborish quyidagini ",[30,6129,6130],{},"anglatmaydi",":",[4499,6133,6134],{},[16,6135,6136],{},"“Google bu yerda ko‘rsatilgan har bir URL’ni albatta crawl va index qilishi kerak.”",[16,6138,6139,6140,6142,6143,991],{},"Google sitemap yuborishni ",[30,6141,5184],{},", ya’ni signal sifatida ta’riflaydi. Bu Google har bir yuborilgan URL’ni yuklab olishi, crawling qilishi yoki indexing qilishini kafolatlamaydi. (",[37,6144,1966],{"href":5195,"rel":6145},[41],[16,6147,6148],{},"Shuning uchun sitemap yaxshi internal linking o‘rnini bosmasligi, balki uni to‘ldirishi kerak.",[16,6150,6151],{},[164,6152,6153],{},"INTERNAL LINK: XML Sitemap nima?",[11,6155,6157],{"id":6156},"discovery-crawling-emas","Discovery — crawling emas",[16,6159,6160],{},"SEO’da ko‘p chalkashlik aynan shu farqdan kelib chiqadi.",[16,6162,6163],{},"Faraz qilaylik, Google internal link orqali quyidagi URL’ni topdi:",[154,6165,6169],{"className":6166,"code":6167,"language":1991,"meta":6168},[1989],"https:\u002F\u002Fexample.com\u002Fnew-page\n","id=\"2xut5y\"",[84,6170,6167],{"__ignoreMap":160},[16,6172,6173,6174,1551],{},"Shu nuqtada Google URL mavjudligini bilishi mumkin. Bu — ",[30,6175,6176],{},"discovery",[16,6178,6179,6180,1551],{},"Keyinroq Googlebot ushbu URL’ni so‘rashi mumkin. Bu — ",[30,6181,4889],{},[16,6183,6184,6185,985,6188,991],{},"Shundan keyin Google kontentni tahlil qilib, uni qidiruv indeksida saqlash kerakmi va qanday saqlash kerakligini hal qilishi mumkin. Bu — ",[30,6186,6187],{},"indexing",[37,6189,1966],{"href":4493,"rel":6190},[41],[16,6192,6193],{},"Soddalashtirilgan jarayon quyidagicha:",[154,6195,6199],{"className":6196,"code":6197,"language":1991,"meta":6198},[1989],"URL discovered\n      ↓\nAdded to crawling process\n      ↓\nGooglebot fetches the URL\n      ↓\nContent is processed\u002Frendered\n      ↓\nGoogle evaluates it for indexing\n","id=\"76aom4\"",[84,6200,6197],{"__ignoreMap":160},[16,6202,6203],{},"Har bir URL barcha bosqichlardan o‘tmaydi.",[16,6205,6206,6207,991],{},"Google texnik talablariga rioya qilish ham crawling, indexing yoki Search’da ko‘rinishni kafolatlamasligini aniq aytadi. (",[37,6208,1966],{"href":4493,"rel":6209},[41],[11,6211,6213],{"id":6212},"robotstxt-urlni-yashirmaydi","robots.txt URL’ni yashirmaydi",[16,6215,6216,6217,6219],{},"Keng tarqalgan xatolardan biri — URL’ni ",[84,6218,1066],{}," orqali bloklash Google uni topishiga yo‘l qo‘ymaydi, degan fikr.",[16,6221,5257],{},[16,6223,6224,6225,6227],{},"Agar boshqa sahifa bloklangan URL’ga havola bersa, Google baribir uning mavjudligini bilib olishi mumkin. ",[84,6226,1066],{}," qoidasi ko‘rsatilgan crawler’ga bloklangan resursni yuklashni taqiqlaydi, ammo Google URL mavjudligini bilmasligini kafolatlamaydi.",[16,6229,6230,6231,991],{},"Google bloklangan URL qidiruv natijalarida snippet’siz ko‘rinishi ham mumkinligini aytadi, chunki Google uning kontentini crawl qila olmaydi. (",[37,6232,1966],{"href":6233,"rel":6234},"https:\u002F\u002Fdevelopers.google.com\u002Fcrawling\u002Fdocs\u002Frobots-txt\u002Frobots-txt-spec?authuser=117&utm_source=chatgpt.com",[41],[16,6236,6237,6238,6240,6241,991],{},"Agar maqsad indexing’ni oldini olish bo‘lsa, Google ",[84,6239,448],{}," ishlatishni va crawler sahifaga kira oladigan bo‘lishini tavsiya qiladi, shunda u ushbu directive’ni ko‘ra oladi. (",[37,6242,1966],{"href":5327,"rel":6243},[41],[16,6245,6246],{},[164,6247,6248],{},"INTERNAL LINK: robots.txt tushuntirilgan",[11,6250,6252],{"id":6251},"nofollow-haqida-nima-deyish-mumkin","nofollow haqida nima deyish mumkin?",[16,6254,6255],{},"Quyidagi havola:",[154,6257,6260],{"className":156,"code":6258,"language":158,"meta":6259,"style":160},"\u003Ca href=\"\u002Fprivate-page\" rel=\"nofollow\">Page\u003C\u002Fa>\n","id=\"igeydk\"",[84,6261,6262],{"__ignoreMap":160},[164,6263,6264,6266,6268,6270,6272,6275,6278,6280,6283,6286,6288],{"class":166,"line":167},[164,6265,171],{"class":170},[164,6267,37],{"class":174},[164,6269,343],{"class":178},[164,6271,182],{"class":170},[164,6273,6274],{"class":185},"\"\u002Fprivate-page\"",[164,6276,6277],{"class":178}," rel",[164,6279,182],{"class":170},[164,6281,6282],{"class":185},"\"nofollow\"",[164,6284,6285],{"class":170},">Page\u003C\u002F",[164,6287,37],{"class":174},[164,6289,194],{"class":170},[16,6291,6292],{},"odatda Google’ga aynan shu havolani kuzatmaslik kerakligini bildiradi.",[16,6294,6295,6296,991],{},"Ammo bu target URL umuman topilmay qolishini kafolatlamaydi. Google o‘sha URL’ni boshqa internal link, boshqa sayt yoki sitemap orqali topishi mumkin. (",[37,6297,1966],{"href":6298,"rel":6299},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fqualify-outbound-links?utm_source=chatgpt.com",[41],[16,6301,6302],{},"Shuning uchun discovery’ni bitta havola orqali boshqariladigan jarayon emas, balki butun web bo‘ylab ishlaydigan jarayon sifatida tushunish to‘g‘riroq.",[11,6304,6306],{"id":6305},"search-console-va-url-yuborish","Search Console va URL yuborish",[16,6308,6309],{},"Siz boshqaradigan kam sonli sahifalar uchun Google Search Console’dagi URL Inspection vositasi orqali crawling so‘rovi yuborish mumkin.",[16,6311,6312,6313,991],{},"Ko‘p sonli URL’lar uchun Google sitemap ishlatishni tavsiya qiladi. (",[37,6314,1966],{"href":6315,"rel":6316},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fask-google-to-recrawl?utm_source=chatgpt.com",[41],[16,6318,6319,6320,991],{},"Indexing so‘rovini qayta-qayta yuborish Google’ni ayni URL’ni tezroq crawl qilishga majbur qilmaydi. Crawling so‘rovi ham sahifaning qidiruv natijalariga kiritilishini kafolatlamaydi. (",[37,6321,1966],{"href":6315,"rel":6322},[41],[16,6324,6325,6326,6329,6330,1250,6333,6336,6337,6340,6341,991],{},"Yana bir keng tarqalgan noto‘g‘ri tushuncha Google’ning ",[30,6327,6328],{},"Indexing API","’si bilan bog‘liq. Bu oddiy sahifalarni yuborish uchun umumiy maqsadli API emas. Hozir Google uni ",[84,6331,6332],{},"JobPosting",[84,6334,6335],{},"VideoObject"," ichiga joylashtirilgan livestream ",[84,6338,6339],{},"BroadcastEvent"," kontentli sahifalar uchun hujjatlashtiradi. (",[37,6342,1966],{"href":6343,"rel":6344},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fapis\u002Findexing-api\u002Fv3\u002Fusing-api?utm_source=chatgpt.com",[41],[11,6346,6348],{"id":6347},"url-discoveryni-yaxshilash","URL discovery’ni yaxshilash",[16,6350,6351],{},"Ko‘pchilik saytlar uchun amaliy yondashuv oddiy:",[838,6353,6354,6357,6360,6366,6369,6372,6379,6382],{},[841,6355,6356],{},"Har bir muhim sahifaga doimiy va crawlable URL bering.",[841,6358,6359],{},"Yangi sahifalarga mavjud, mavzuga aloqador sahifalardan havola bering.",[841,6361,6362,6363,6365],{},"Oddiy ",[84,6364,5901],{}," havolalardan foydalaning.",[841,6367,6368],{},"Muhim sahifalarni sayt arxitekturasi orqali yetib boriladigan qiling.",[841,6370,6371],{},"Google topishi kerak bo‘lgan URL’larni o‘z ichiga olgan aniq sitemap yuriting.",[841,6373,6374,6375,6378],{},"Kontent haqiqatdan o‘zgarganda mazmunli ",[84,6376,6377],{},"\u003Clastmod>"," qiymatlarini yangilang.",[841,6380,6381],{},"Kerakli sahifa yoki resurslarni tasodifan bloklab qo‘ymang.",[841,6383,6384],{},"Topilmayotgan yoki crawl qilinmayotgan muhim URL’larni diagnostika qilish uchun Search Console’dan foydalaning.",[16,6386,6387,6388,991],{},"Google, shuningdek, desktop versiyada mavjud bo‘lgan muhim havolalar saytning mobile versiyasida bo‘lmasa, discovery sekinlashishi mumkinligini aytadi, chunki Google sahifalarning mobile versiyasini indexing qiladi. (",[37,6389,1966],{"href":6390,"rel":6391},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Ftroubleshoot-crawling-errors?authuser=2&utm_source=chatgpt.com",[41],[11,6393,742],{"id":741},[16,6395,6396,698,6399,6402],{},[30,6397,6398],{},"Internal link’larni asosiy discovery arxitekturasi",[30,6400,6401],{},"sitemap’larni esa qo‘shimcha discovery signali"," sifatida ko‘ring.",[16,6404,6405],{},"Yangi sahifa ideal holatda faqat sitemap ichida mavjud bo‘lib qolmasligi, balki boshqa foydali sahifa orqali tabiiy tarzda topilishi kerak. Katta yoki tez-tez yangilanadigan saytlar uchun sitemap generatsiyasini avtomatlashtirish va yangi chop etilgan canonical URL’larning sitemap’ga tezda qo‘shilishini ta’minlash maqsadga muvofiq.",[16,6407,6408],{},"Agar muhim sahifa Google’da ko‘rinmayotgan bo‘lsa, bosqichlarni alohida tekshiring:",[154,6410,6414],{"className":6411,"code":6412,"language":1991,"meta":6413},[1989],"Does Google know the URL?\n        ↓\nCan Google crawl it?\n        ↓\nCan Google render the content?\n        ↓\nIs it eligible for indexing?\n        ↓\nDid Google choose to index it?\n","id=\"wn6bj5\"",[84,6415,6412],{"__ignoreMap":160},[16,6417,6418],{},"Agar muammoning asl sababi sayt arxitekturasi, crawlability, rendering, duplicate kontent yoki kontent sifati bo‘lsa, indexing muammosini URL’ni qayta-qayta yuborish orqali hal qilib bo‘lmaydi.",[11,6420,759],{"id":758},[761,6422,6424],{"id":6423},"google-yangi-urlni-qancha-vaqtda-topadi","Google yangi URL’ni qancha vaqtda topadi?",[16,6426,6427,6428,991],{},"Discovery uchun kafolatlangan vaqt yo‘q. Google so‘rovdan keyingi crawling bir necha kundan bir necha haftagacha davom etishi mumkinligini va crawling jadvali algoritmik tarzda belgilanishini aytadi. (",[37,6429,1966],{"href":6315,"rel":6430},[41],[761,6432,6434],{"id":6433},"google-sahifalarni-topishi-uchun-sitemap-shartmi","Google sahifalarni topishi uchun sitemap shartmi?",[16,6436,6437,6438,991],{},"Yo‘q. Agar sahifalar to‘g‘ri bog‘langan bo‘lsa, Google ularning ko‘pini havolalar orqali topa oladi. Sitemap ayniqsa katta, yangi, murakkab yoki media kontenti ko‘p bo‘lgan saytlar uchun foydali. (",[37,6439,1966],{"href":6120,"rel":6440},[41],[761,6442,6444],{"id":6443},"google-internal-linksiz-sahifani-topa-oladimi","Google internal link’siz sahifani topa oladimi?",[16,6446,6447],{},"Ehtimol, ha. Google URL’ni external link, sitemap yoki boshqa manba orqali topishi mumkin. Ammo muhim sahifa uchun bunga tayanish yaxshi sayt arxitekturasi hisoblanmaydi.",[761,6449,6451],{"id":6450},"sitemap-yuborish-indexingni-kafolatlaydimi","Sitemap yuborish indexing’ni kafolatlaydimi?",[16,6453,6454,6455,991],{},"Yo‘q. Google sitemap yuborish hint ekanini va crawling yoki indexing’ni kafolatlamasligini aniq aytadi. (",[37,6456,1966],{"href":5195,"rel":6457},[41],[761,6459,6461],{"id":6460},"robotstxt-url-discoveryni-toxtatadimi","robots.txt URL discovery’ni to‘xtatadimi?",[16,6463,6464,6465,991],{},"Har doim ham emas. Google sahifani crawl qila olmasa ham, havolalar yoki boshqa discovery mexanizmlari orqali bloklangan URL mavjudligini bilishi mumkin. (",[37,6466,1966],{"href":6233,"rel":6467},[41],[11,6469,826],{"id":825},[16,6471,6472],{},"Google mavjudligini bilmagan sahifani crawl qila olmaydi.",[16,6474,6475],{},"Yangi URL’lar asosan Googlebot web bo‘ylab crawlable havolalarni kuzatganda va sayt egalari taqdim etgan sitemap’larni qayta ishlaganda topiladi. URL topilgach, Google alohida jarayonda uni qachon va umuman crawling qilish kerakligini, undan keyin esa olingan kontent indexing qilinishi kerakmi yoki yo‘qmi, shuni hal qiladi.",[16,6477,6478,6479],{},"SEO uchun amaliy xulosa oddiy: ",[30,6480,6481],{},"URL’larni shunchaki serverga joylamang — ularni topish mumkin bo‘lgan web struktura ichida publish qiling.",[11,6483,1705],{"id":1704},[3335,6485,6486,6498,6508,6520,6531,6542,6553,6566],{},[841,6487,843,6488,985,6491,2529,6494],{},[845,6489,6490],{},"In-depth guide to how Google Search works",[37,6492,1966],{"href":4493,"rel":6493},[41],[37,6495,6497],{"href":4493,"rel":6496},[41],"Google documentation",[841,6499,843,6500,985,6502,2529,6505],{},[845,6501,882],{},[37,6503,1966],{"href":406,"rel":6504},[41],[37,6506,6497],{"href":5069,"rel":6507},[41],[841,6509,843,6510,985,6513,2529,6516],{},[845,6511,6512],{},"Learn about sitemaps",[37,6514,1966],{"href":6120,"rel":6515},[41],[37,6517,6497],{"href":6518,"rel":6519},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fsitemaps\u002Foverview?utm_source=chatgpt.com",[41],[841,6521,843,6522,985,6525,2529,6528],{},[845,6523,6524],{},"Build and submit a sitemap",[37,6526,1966],{"href":5195,"rel":6527},[41],[37,6529,6497],{"href":5677,"rel":6530},[41],[841,6532,843,6533,985,6536,2529,6539],{},[845,6534,6535],{},"Ask Google to recrawl your URLs",[37,6537,1966],{"href":6315,"rel":6538},[41],[37,6540,6497],{"href":6315,"rel":6541},[41],[841,6543,843,6544,985,6547,2529,6550],{},[845,6545,6546],{},"Understand JavaScript SEO basics",[37,6548,1966],{"href":457,"rel":6549},[41],[37,6551,6497],{"href":457,"rel":6552},[41],[841,6554,6555,6556,985,6559,2529,6562],{},"Google Crawling Infrastructure — ",[845,6557,6558],{},"How Google interprets the robots.txt specification",[37,6560,1966],{"href":6233,"rel":6561},[41],[37,6563,6497],{"href":6564,"rel":6565},"https:\u002F\u002Fdevelopers.google.com\u002Fcrawling\u002Fdocs\u002Frobots-txt\u002Frobots-txt-spec?utm_source=chatgpt.com",[41],[841,6567,843,6568,985,6571,2529,6574],{},[845,6569,6570],{},"Using the Indexing API",[37,6572,1966],{"href":6343,"rel":6573},[41],[37,6575,6497],{"href":6343,"rel":6576},[41],[915,6578,917],{},{"title":160,"searchDepth":197,"depth":197,"links":6580},[6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6593,6594,6595],{"id":5776,"depth":197,"text":5777},{"id":24,"depth":197,"text":25},{"id":45,"depth":197,"text":46},{"id":5922,"depth":197,"text":5923},{"id":5992,"depth":197,"text":5993},{"id":6084,"depth":197,"text":6085},{"id":6156,"depth":197,"text":6157},{"id":6212,"depth":197,"text":6213},{"id":6251,"depth":197,"text":6252},{"id":6305,"depth":197,"text":6306},{"id":6347,"depth":197,"text":6348},{"id":741,"depth":197,"text":742},{"id":758,"depth":197,"text":759},{"id":825,"depth":197,"text":826},{"id":1704,"depth":197,"text":1705},"Google yangi URL’larni havolalar, sitemap, redirect va crawling orqali qanday topishini hamda URL discovery nega avtomatik indexing degani emasligini bilib oling.","\u002Fdiscovers-in-urls.png",{},"\u002Fblog\u002Fuz\u002Furl-aniqlash",{"title":5771,"description":6596},"url-aniqlash","blog\u002Fuz\u002Furl-aniqlash","discovers-new-urls","ALjWiub4UCkYaSKsdg9xeQ5EM2ajVZ3cmpo8dnLL2bQ",{"id":6606,"title":6607,"author":6,"body":6608,"category":4104,"description":8082,"draft":939,"extension":940,"featured":941,"image":8083,"imageAlt":8084,"locale":944,"meta":8085,"navigation":941,"path":8086,"publishedAt":8087,"seo":8088,"slug":8089,"stem":8090,"translationKey":8091,"updatedAt":8087,"__hash__":8092},"blog\u002Fblog\u002Fuz\u002Fcsp-qollanmasi.md","Content Security Policy (CSP): amaliy muhandislik qo‘llanmasi",{"type":8,"value":6609,"toc":8053},[6610,6614,6622,6633,6637,6644,6654,6661,6664,6795,6823,6827,6830,6861,6864,6867,6872,6875,6880,6883,6886,6893,6896,6906,6918,6922,6925,6951,6957,6960,6992,6995,7005,7008,7018,7021,7025,7028,7038,7044,7054,7057,7067,7070,7077,7080,7083,7086,7096,7103,7105,7115,7117,7149,7155,7176,7179,7183,7189,7191,7249,7252,7265,7271,7274,7281,7284,7294,7297,7300,7331,7334,7422,7440,7449,7453,7456,7459,7486,7493,7496,7501,7504,7508,7519,7552,7567,7570,7577,7580,7617,7620,7634,7638,7652,7658,7660,7663,7678,7681,7684,7686,7690,7696,7703,7709,7713,7719,7723,7726,7730,7733,7735,7738,7741,7743,7838,7841,7845,7851,7857,7865,7871,7877,7883,7888,7930,7935,7962,7967,7994,7999,8016,8028,8034,8044,8050],[11,6611,6613],{"id":6612},"content-security-policy-amaliy-muhandislik-qollanmasi","Content Security Policy: amaliy muhandislik qo‘llanmasi",[16,6615,6616,6617,991],{},"Content Security Policy (CSP) — brauzer tomonidan qo‘llanadigan xavfsizlik mexanizmi bo‘lib, saytga qaysi resurslar yuklanishi yoki bajarilishi mumkinligini va xavfsizlik bilan bog‘liq qaysi harakatlarga ruxsat berilishini belgilash imkonini beradi. Uning eng muhim amaliy vazifasi cross-site scripting (XSS) oqibatlarini kamaytirishdir: zararli HTML sahifaga kirib qolgan taqdirda ham, kuchli CSP kiritilgan JavaScript kodining bajarilishini to‘sishi mumkin. CSP Level 3 — W3C spetsifikatsiyasining amaldagi yo‘nalishi; 2026-yil sentabr holatiga ko‘ra u hali ham Working Draft bo‘lib, W3C’ning joriy drafti 2026-yil 13-avgust sanasi bilan berilgan. (",[37,6618,6621],{"href":6619,"rel":6620},"https:\u002F\u002Fwww.w3.org\u002FTR\u002FCSP\u002Fall\u002F?utm_source=chatgpt.com",[41],"w3.org",[16,6623,6624,6625,6628,6629,991],{},"CSP’ni to‘g‘ri escaping, sanitization, xavfsiz templating yoki XSS zaifliklarini tuzatishning o‘rnini bosuvchi vosita deb qarash kerak emas. Bu ",[30,6626,6627],{},"defense in depth"," — brauzer tomonidan majburiy qo‘llanadigan qo‘shimcha himoya qatlami. (",[37,6630,1851],{"href":6631,"rel":6632},"https:\u002F\u002Fweb.dev\u002Farticles\u002Fstrict-csp?utm_source=chatgpt.com",[41],[11,6634,6636],{"id":6635},"csp-nima","CSP nima?",[16,6638,6639,6640,6643],{},"Content Security Policy odatda ",[84,6641,6642],{},"Content-Security-Policy"," HTTP response header orqali yuboriladi:",[154,6645,6648],{"className":488,"code":6646,"language":490,"meta":6647,"style":160},"Content-Security-Policy: default-src 'self'\n","id=\"pdsnui\"",[84,6649,6650],{"__ignoreMap":160},[164,6651,6652],{"class":166,"line":167},[164,6653,6646],{},[16,6655,6656,6657,6660],{},"Bu brauzerga ",[84,6658,6659],{},"default-src"," tomonidan boshqariladigan resurslar odatda sahifaning o‘zi joylashgan origin’dan yuklanishi kerakligini bildiradi.",[16,6662,6663],{},"Policy bir nechta directive’dan iborat bo‘lishi mumkin. Har biri alohida imkoniyatni boshqaradi:",[48,6665,6666,6676],{},[51,6667,6668],{},[54,6669,6670,6673],{},[57,6671,6672],{},"Directive",[57,6674,6675],{},"Nimani boshqaradi",[64,6677,6678,6688,6698,6708,6721,6731,6741,6751,6761,6775,6785],{},[54,6679,6680,6685],{},[69,6681,6682],{},[84,6683,6684],{},"script-src",[69,6686,6687],{},"JavaScript bajarilishi va yuklanishi",[54,6689,6690,6695],{},[69,6691,6692],{},[84,6693,6694],{},"style-src",[69,6696,6697],{},"CSS yuklanishi va inline style’lar",[54,6699,6700,6705],{},[69,6701,6702],{},[84,6703,6704],{},"img-src",[69,6706,6707],{},"Rasmlar",[54,6709,6710,6715],{},[69,6711,6712],{},[84,6713,6714],{},"connect-src",[69,6716,6717,6720],{},[84,6718,6719],{},"fetch()",", XHR, WebSocket va shunga o‘xshash ulanishlar",[54,6722,6723,6728],{},[69,6724,6725],{},[84,6726,6727],{},"font-src",[69,6729,6730],{},"Shriftlar",[54,6732,6733,6738],{},[69,6734,6735],{},[84,6736,6737],{},"frame-src",[69,6739,6740],{},"Sahifa yuklashi mumkin bo‘lgan frame’lar",[54,6742,6743,6748],{},[69,6744,6745],{},[84,6746,6747],{},"worker-src",[69,6749,6750],{},"Worker va service worker’lar",[54,6752,6753,6758],{},[69,6754,6755],{},[84,6756,6757],{},"object-src",[69,6759,6760],{},"Plugin\u002Fobject resurslari",[54,6762,6763,6768],{},[69,6764,6765],{},[84,6766,6767],{},"base-uri",[69,6769,6770,6771,6774],{},"Ruxsat berilgan ",[84,6772,6773],{},"\u003Cbase>"," URL’lar",[54,6776,6777,6782],{},[69,6778,6779],{},[84,6780,6781],{},"form-action",[69,6783,6784],{},"Form yuborilishi mumkin bo‘lgan manzillar",[54,6786,6787,6792],{},[69,6788,6789],{},[84,6790,6791],{},"frame-ancestors",[69,6793,6794],{},"Sahifani embed qilishga ruxsat berilgan saytlar",[16,6796,6797,6799,6800,6802,6803,6805,6806,6809,6810,698,6812,586,6814,5725,6816,6818,6819,991],{},[84,6798,6659],{}," ko‘plab fetch directive’lar uchun fallback vazifasini bajaradi. Masalan, ",[84,6801,6704],{}," bo‘lmasa, rasmlar ",[84,6804,6659],{}," qoidalariga tushishi mumkin. Ammo bu qoida ",[30,6807,6808],{},"hamma directive’ga tegishli emas",": masalan, ",[84,6811,6791],{},[84,6813,6781],{},[84,6815,6767],{},[84,6817,6659],{}," qiymatini meros qilib olmaydi. (",[37,6820,6621],{"href":6821,"rel":6822},"https:\u002F\u002Fwww.w3.org\u002FTR\u002FCSP\u002F?utm_source=chatgpt.com",[41],[11,6824,6826],{"id":6825},"csp-nega-muhim","CSP nega muhim?",[16,6828,6829],{},"Tasavvur qiling, zaif sahifa hujumchi boshqaradigan HTML’ni tasodifan chiqarib yuboradi:",[154,6831,6834],{"className":156,"code":6832,"language":158,"meta":6833,"style":160},"\u003Cscript>\n  stealSession();\n\u003C\u002Fscript>\n","id=\"ir0mn4\"",[84,6835,6836,6844,6852],{"__ignoreMap":160},[164,6837,6838,6840,6842],{"class":166,"line":167},[164,6839,171],{"class":170},[164,6841,202],{"class":174},[164,6843,194],{"class":170},[164,6845,6846,6849],{"class":166,"line":197},[164,6847,6848],{"class":178},"  stealSession",[164,6850,6851],{"class":170},"();\n",[164,6853,6854,6857,6859],{"class":166,"line":1187},[164,6855,6856],{"class":170},"\u003C\u002F",[164,6858,202],{"class":174},[164,6860,194],{"class":170},[16,6862,6863],{},"Qo‘shimcha himoya bo‘lmasa, brauzer bu kodni bajarishi mumkin.",[16,6865,6866],{},"Kuchli CSP savolni:",[4499,6868,6869],{},[16,6870,6871],{},"“Bu to‘g‘ri JavaScript kodimi?”",[16,6873,6874],{},"degan holatdan:",[4499,6876,6877],{},[16,6878,6879],{},"“Bu sahifa aynan shu JavaScript bajarilishiga ruxsat berganmi?”",[16,6881,6882],{},"degan holatga o‘zgartiradi.",[16,6884,6885],{},"Aynan shu sababli CSP ko‘plab XSS zaifliklarining ta’sirini sezilarli kamaytirishi mumkin.",[16,6887,6888,6889,6892],{},"Asosiy murakkablik — ",[30,6890,6891],{},"qaysi script’lar ishonchli hisoblanishini"," belgilashda.",[16,6894,6895],{},"Eski CSP konfiguratsiyalari ko‘pincha domain allowlist’ga tayanardi:",[154,6897,6900],{"className":488,"code":6898,"language":490,"meta":6899,"style":160},"script-src 'self' https:\u002F\u002Fcdn.example.com\n","id=\"1mj74q\"",[84,6901,6902],{"__ignoreMap":160},[164,6903,6904],{"class":166,"line":167},[164,6905,6898],{},[16,6907,6908,6909,6912,6913,991],{},"Bu istalgan script’ga ruxsat berishdan yaxshiroq, lekin katta host-based allowlist’larni tushunish va xavfsiz boshqarish qiyinlashadi. Bundan tashqari, ayrim ruxsat berilgan origin’lar o‘zlari ham hujumchi boshqaradigan kodni bajarish imkonini berishi mumkin. Shu sabab zamonaviy CSP tavsiyalari script bajarilishini boshqarishda nonce yoki hash asosidagi ",[30,6910,6911],{},"strict CSP","’ni afzal ko‘radi. (",[37,6914,6917],{"href":6915,"rel":6916},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FGuides\u002FCSP?utm_source=chatgpt.com",[41],"developer.mozilla.org",[11,6919,6921],{"id":6920},"strict-csp","Strict CSP",[16,6923,6924],{},"Nonce asosidagi oddiy strict policy quyidagicha ko‘rinishi mumkin:",[154,6926,6929],{"className":488,"code":6927,"language":490,"meta":6928,"style":160},"Content-Security-Policy:\n  script-src 'nonce-RANDOM_VALUE' 'strict-dynamic';\n  object-src 'none';\n  base-uri 'none';\n","id=\"qjhzga\"",[84,6930,6931,6936,6941,6946],{"__ignoreMap":160},[164,6932,6933],{"class":166,"line":167},[164,6934,6935],{},"Content-Security-Policy:\n",[164,6937,6938],{"class":166,"line":197},[164,6939,6940],{},"  script-src 'nonce-RANDOM_VALUE' 'strict-dynamic';\n",[164,6942,6943],{"class":166,"line":1187},[164,6944,6945],{},"  object-src 'none';\n",[164,6947,6948],{"class":166,"line":1193},[164,6949,6950],{},"  base-uri 'none';\n",[16,6952,6953,6954,1551],{},"Bu yerda asosiy element — ",[30,6955,6956],{},"nonce",[16,6958,6959],{},"Server har bir response uchun yangi, oldindan taxmin qilib bo‘lmaydigan qiymat yaratadi:",[154,6961,6964],{"className":156,"code":6962,"language":158,"meta":6963,"style":160},"\u003Cscript nonce=\"RANDOM_VALUE\" src=\"\u002Fapp.js\">\u003C\u002Fscript>\n","id=\"vjsc53\"",[84,6965,6966],{"__ignoreMap":160},[164,6967,6968,6970,6972,6975,6977,6980,6982,6984,6986,6988,6990],{"class":166,"line":167},[164,6969,171],{"class":170},[164,6971,202],{"class":174},[164,6973,6974],{"class":178}," nonce",[164,6976,182],{"class":170},[164,6978,6979],{"class":185},"\"RANDOM_VALUE\"",[164,6981,205],{"class":178},[164,6983,182],{"class":170},[164,6985,210],{"class":185},[164,6987,189],{"class":170},[164,6989,202],{"class":174},[164,6991,194],{"class":170},[16,6993,6994],{},"Xuddi shu qiymat CSP header ichida ham bo‘ladi:",[154,6996,6999],{"className":488,"code":6997,"language":490,"meta":6998,"style":160},"script-src 'nonce-RANDOM_VALUE'\n","id=\"cyxv8z\"",[84,7000,7001],{"__ignoreMap":160},[164,7002,7003],{"class":166,"line":167},[164,7004,6997],{},[16,7006,7007],{},"Qiymatlar mos kelgani uchun brauzer script’ni bajaradi. To‘g‘ri nonce bo‘lmagan kiritilgan script esa bloklanadi.",[16,7009,7010,7011,7014,7015,991],{},"Bu yondashuv haqiqiy himoya berishi uchun nonce oldindan taxmin qilib bo‘lmaydigan bo‘lishi va har bir response uchun yangidan yaratilishi kerak. web.dev kriptografik jihatdan kuchli, imkon qadar kamida ",[30,7012,7013],{},"128 bit"," qiymatdan foydalanishni tavsiya qiladi. (",[37,7016,1851],{"href":6631,"rel":7017},[41],[16,7019,7020],{},"Nonce’ni application ishga tushganda bir marta yaratib, keyin doimiy ishlatmang. O‘zgarmaydigan nonce bir martalik authorization token sifatidagi ma’nosini yo‘qotadi.",[11,7022,7024],{"id":7023},"nonce-va-hash","Nonce va hash",[16,7026,7027],{},"Nonce va hash o‘xshash muammoni hal qiladi, lekin turli arxitekturalarga mos keladi.",[16,7029,7030,7033,7034,7037],{},[30,7031,7032],{},"Nonce odatda dinamik rendering qilinadigan HTML uchun qulayroq."," Server har bir request paytida yangi qiymat yaratadi va uni ruxsat berilgan ",[84,7035,7036],{},"\u003Cscript>"," elementlariga qo‘shadi.",[16,7039,7040,7043],{},[30,7041,7042],{},"Hash esa barqaror yoki statik generatsiya qilingan HTML uchun qulay."," Tasodifiy qiymat yaratish o‘rniga, ruxsat berilgan script uchun cryptographic hash hisoblanadi:",[154,7045,7048],{"className":488,"code":7046,"language":490,"meta":7047,"style":160},"script-src 'sha256-AbCdEf...'\n","id=\"qghixj\"",[84,7049,7050],{"__ignoreMap":160},[164,7051,7052],{"class":166,"line":167},[164,7053,7046],{},[16,7055,7056],{},"Brauzer script’ning hash qiymatini hisoblaydi va faqat policy’dagi qiymat bilan mos kelsa bajaradi.",[16,7058,7059,7060,7063,7064,991],{},"CSP SHA-256, SHA-384 va SHA-512 hash source expression’larini qo‘llab-quvvatlaydi. Inline script ichidagi juda kichik o‘zgarish ham uning hash qiymatini o‘zgartiradi, shu sabab hash-based CSP ishlatadigan build system’lar script tarkibi o‘zgarganda policy’ni qayta generatsiya qilishi kerak bo‘ladi. MDN tashqi script’larni hash orqali ruxsatlashda qo‘shimcha talablar, jumladan mos ",[84,7061,7062],{},"integrity"," attribute kerakligini ham hujjatlashtiradi. (",[37,7065,6917],{"href":6915,"rel":7066},[41],[16,7068,7069],{},"SSR application uchun nonce ko‘pincha soddaroq muhandislik yechimi bo‘ladi. Har bir response’da HTML’ni o‘zgartirish istalmaydigan statik saytlar uchun esa hash qulayroq bo‘lishi mumkin.",[11,7071,7073,7076],{"id":7072},"strict-dynamic-qanday-ishlaydi",[84,7074,7075],{},"strict-dynamic"," qanday ishlaydi?",[16,7078,7079],{},"Zamonaviy application’lar ko‘pincha boshqa script’larni dinamik yuklaydigan ishonchli bootstrap script’dan foydalanadi.",[16,7081,7082],{},"Qo‘shimcha sozlama bo‘lmasa, ikkilamchi script’lar bloklanishi mumkin.",[16,7084,7085],{},"Quyidagini qo‘shish:",[154,7087,7090],{"className":488,"code":7088,"language":490,"meta":7089,"style":160},"'strict-dynamic'\n","id=\"54oixd\"",[84,7091,7092],{"__ignoreMap":160},[164,7093,7094],{"class":166,"line":167},[164,7095,7088],{},[16,7097,7098,7099,991],{},"to‘g‘ri nonce yoki hash orqali berilgan ishonchni shu trusted script yuklaydigan script’larga ham uzatish imkonini beradi. (",[37,7100,6917],{"href":7101,"rel":7102},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FReference\u002FHeaders\u002FContent-Security-Policy\u002Fscript-src?utm_source=chatgpt.com",[41],[16,7104,1265],{},[154,7106,7109],{"className":488,"code":7107,"language":490,"meta":7108,"style":160},"script-src 'nonce-abc123' 'strict-dynamic'\n","id=\"wiv8ez\"",[84,7110,7111],{"__ignoreMap":160},[164,7112,7113],{"class":166,"line":167},[164,7114,7107],{},[16,7116,1357],{},[154,7118,7121],{"className":156,"code":7119,"language":158,"meta":7120,"style":160},"\u003Cscript nonce=\"abc123\" src=\"\u002Fbootstrap.js\">\u003C\u002Fscript>\n","id=\"voli6i\"",[84,7122,7123],{"__ignoreMap":160},[164,7124,7125,7127,7129,7131,7133,7136,7138,7140,7143,7145,7147],{"class":166,"line":167},[164,7126,171],{"class":170},[164,7128,202],{"class":174},[164,7130,6974],{"class":178},[164,7132,182],{"class":170},[164,7134,7135],{"class":185},"\"abc123\"",[164,7137,205],{"class":178},[164,7139,182],{"class":170},[164,7141,7142],{"class":185},"\"\u002Fbootstrap.js\"",[164,7144,189],{"class":170},[164,7146,202],{"class":174},[164,7148,194],{"class":170},[16,7150,7151,7154],{},[84,7152,7153],{},"\u002Fbootstrap.js"," bajarilishiga ruxsat beradi va u keyinchalik yaratib, yuklaydigan script’larga ham ruxsat berishi mumkin.",[16,7156,7157,7158,7161,7162,7164,7165,698,7168,7171,7172,991],{},"Bu yerda muhim oqibat bor: CSP Level 3 semantikasini qo‘llaydigan brauzerlarda ",[84,7159,7160],{},"'strict-dynamic'"," to‘g‘ri nonce\u002Fhash ishonchi bilan ishlatilsa, ",[84,7163,6684],{}," ichidagi ",[84,7166,7167],{},"'self'",[84,7169,7170],{},"https:"," va aniq host allowlist kabi host expression’lar e’tiborga olinmaydi. Natijada trusted script chain’ning o‘zi muhim xavfsizlik chegarasiga aylanadi. (",[37,7173,6917],{"href":7174,"rel":7175},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FReference\u002FHeaders\u002FContent-Security-Policy?utm_source=chatgpt.com",[41],[16,7177,7178],{},"Agar trusted JavaScript hujumchi boshqarishi mumkin bo‘lgan input asosida script URL’larini dinamik yaratsa, CSP bunday arxitekturani avtomatik ravishda tuzatib bera olmaydi.",[11,7180,7182],{"id":7181},"amaliy-policy","Amaliy policy",[16,7184,7185,7186,7188],{},"Real application odatda faqat ",[84,7187,6684],{}," bilan cheklanmaydi.",[16,7190,1265],{},[154,7192,7195],{"className":488,"code":7193,"language":490,"meta":7194,"style":160},"Content-Security-Policy:\n  default-src 'self';\n  script-src 'nonce-{NONCE}' 'strict-dynamic';\n  style-src 'self';\n  img-src 'self' data: https:;\n  font-src 'self';\n  connect-src 'self' https:\u002F\u002Fapi.example.com;\n  object-src 'none';\n  base-uri 'none';\n  form-action 'self';\n  frame-ancestors 'none';\n","id=\"x6zwn4\"",[84,7196,7197,7201,7206,7211,7216,7221,7226,7231,7235,7239,7244],{"__ignoreMap":160},[164,7198,7199],{"class":166,"line":167},[164,7200,6935],{},[164,7202,7203],{"class":166,"line":197},[164,7204,7205],{},"  default-src 'self';\n",[164,7207,7208],{"class":166,"line":1187},[164,7209,7210],{},"  script-src 'nonce-{NONCE}' 'strict-dynamic';\n",[164,7212,7213],{"class":166,"line":1193},[164,7214,7215],{},"  style-src 'self';\n",[164,7217,7218],{"class":166,"line":1199},[164,7219,7220],{},"  img-src 'self' data: https:;\n",[164,7222,7223],{"class":166,"line":2153},[164,7224,7225],{},"  font-src 'self';\n",[164,7227,7228],{"class":166,"line":2601},[164,7229,7230],{},"  connect-src 'self' https:\u002F\u002Fapi.example.com;\n",[164,7232,7233],{"class":166,"line":2613},[164,7234,6945],{},[164,7236,7237],{"class":166,"line":2625},[164,7238,6950],{},[164,7240,7241],{"class":166,"line":2634},[164,7242,7243],{},"  form-action 'self';\n",[164,7245,7246],{"class":166,"line":3086},[164,7247,7248],{},"  frame-ancestors 'none';\n",[16,7250,7251],{},"Buni har bir saytga o‘zgartirmasdan ko‘chirib qo‘yiladigan tayyor policy emas, balki arxitektura misoli sifatida ko‘rish kerak.",[16,7253,7254,7255,7258,7259,7261,7262,991],{},"Masalan, ",[84,7256,7257],{},"frame-ancestors 'none'"," boshqa sahifalarning ushbu document’ni embed qilishini taqiqlaydi va UI-redressing hujumlaridan himoyalanishga yordam berishi mumkin. Ammo customer saytlariga ataylab embed qilinadigan application uchun aniq parent origin’larni ruxsatlash kerak bo‘lishi mumkin. Bu directive ",[84,7260,6659],{},"’dan meros olmaydi, shuning uchun zarur bo‘lsa alohida ko‘rsatilishi kerak. (",[37,7263,6621],{"href":6821,"rel":7264},[41],[16,7266,7267,7268,7270],{},"Xuddi shunday, ",[84,7269,6714],{}," ichida application amalda ishlatadigan API, WebSocket endpoint va boshqa network manzillar bo‘lishi kerak.",[16,7272,7273],{},"Maqsad imkon qadar uzun CSP yaratish emas. Maqsad — application’ning qonuniy xatti-harakatlarini imkon qadar aniq va tor doirada ifodalash.",[11,7275,7277,7280],{"id":7276},"unsafe-inline-dan-saqlaning",[84,7278,7279],{},"unsafe-inline"," dan saqlaning",[16,7282,7283],{},"CSP xatolariga keng tarqalgan javoblardan biri:",[154,7285,7288],{"className":488,"code":7286,"language":490,"meta":7287,"style":160},"script-src 'self' 'unsafe-inline'\n","id=\"czjz90\"",[84,7289,7290],{"__ignoreMap":160},[164,7291,7292],{"class":166,"line":167},[164,7293,7286],{},[16,7295,7296],{},"Bu ko‘pincha CSP’ning eng muhim himoya imkoniyatlaridan birini zaiflashtiradi, chunki ixtiyoriy inline JavaScript bajarilishiga ruxsat berilishi mumkin.",[16,7298,7299],{},"Yaxshiroq yondashuv — bunday pattern’larni:",[154,7301,7304],{"className":156,"code":7302,"language":158,"meta":7303,"style":160},"\u003Cbutton onclick=\"save()\">Save\u003C\u002Fbutton>\n","id=\"6w257e\"",[84,7305,7306],{"__ignoreMap":160},[164,7307,7308,7310,7313,7315,7317,7319,7322,7324,7327,7329],{"class":166,"line":167},[164,7309,171],{"class":170},[164,7311,7312],{"class":174},"button",[164,7314,373],{"class":178},[164,7316,182],{"class":170},[164,7318,378],{"class":185},[164,7320,7321],{"class":178},"save",[164,7323,384],{"class":185},[164,7325,7326],{"class":170},">Save\u003C\u002F",[164,7328,7312],{"class":174},[164,7330,194],{"class":170},[16,7332,7333],{},"JavaScript event registration’ga o‘tkazish:",[154,7335,7338],{"className":156,"code":7336,"language":158,"meta":7337,"style":160},"\u003Cbutton id=\"save\">Save\u003C\u002Fbutton>\n\n\u003Cscript nonce=\"{NONCE}\">\ndocument\n  .getElementById('save')\n  .addEventListener('click', save);\n\u003C\u002Fscript>\n","id=\"867he7\"",[84,7339,7340,7359,7363,7378,7383,7399,7414],{"__ignoreMap":160},[164,7341,7342,7344,7346,7348,7350,7353,7355,7357],{"class":166,"line":167},[164,7343,171],{"class":170},[164,7345,7312],{"class":174},[164,7347,179],{"class":178},[164,7349,182],{"class":170},[164,7351,7352],{"class":185},"\"save\"",[164,7354,7326],{"class":170},[164,7356,7312],{"class":174},[164,7358,194],{"class":170},[164,7360,7361],{"class":166,"line":197},[164,7362,1190],{"emptyLinePlaceholder":941},[164,7364,7365,7367,7369,7371,7373,7376],{"class":166,"line":1187},[164,7366,171],{"class":170},[164,7368,202],{"class":174},[164,7370,6974],{"class":178},[164,7372,182],{"class":170},[164,7374,7375],{"class":185},"\"{NONCE}\"",[164,7377,194],{"class":170},[164,7379,7380],{"class":166,"line":1193},[164,7381,7382],{"class":170},"document\n",[164,7384,7385,7388,7391,7393,7396],{"class":166,"line":1199},[164,7386,7387],{"class":170},"  .",[164,7389,7390],{"class":178},"getElementById",[164,7392,2364],{"class":170},[164,7394,7395],{"class":185},"'save'",[164,7397,7398],{"class":170},")\n",[164,7400,7401,7403,7406,7408,7411],{"class":166,"line":2153},[164,7402,7387],{"class":170},[164,7404,7405],{"class":178},"addEventListener",[164,7407,2364],{"class":170},[164,7409,7410],{"class":185},"'click'",[164,7412,7413],{"class":170},", save);\n",[164,7415,7416,7418,7420],{"class":166,"line":2601},[164,7417,6856],{"class":170},[164,7419,202],{"class":174},[164,7421,194],{"class":170},[16,7423,7424,7425,7428,7429,7432,7433,7436,7437,991],{},"Strict CSP odatda ",[84,7426,7427],{},"href=\"javascript:...\""," kabi JavaScript URL’larni ham to‘sadi va ",[84,7430,7431],{},"'unsafe-eval'"," ochiq ruxsat berilmagan bo‘lsa, ",[84,7434,7435],{},"eval()"," kabi string’ni code sifatida bajaradigan mexanizmlarni bloklaydi. (",[37,7438,1851],{"href":6631,"rel":7439},[41],[16,7441,7442,7443,1250,7446,7448],{},"Shu sabab ",[84,7444,7445],{},"'unsafe-inline'",[84,7447,7431],{}," ni faqat CSP xatolarini yo‘qotish uchun qo‘shish standart yechim emas, balki muammoni tekshirishga sabab bo‘lishi kerak.",[11,7450,7452],{"id":7451},"report-only-bilan-bosqichma-bosqich-joriy-qiling","Report-Only bilan bosqichma-bosqich joriy qiling",[16,7454,7455],{},"Strict policy’ni production’da to‘g‘ridan-to‘g‘ri yoqish analytics, payment widget’lar, authentication flow’lar, customer support tool’lar, API request’lar yoki CSP hisobga olinmay yozilgan application code’ni buzishi mumkin.",[16,7457,7458],{},"Quyidagidan foydalaning:",[154,7460,7463],{"className":488,"code":7461,"language":490,"meta":7462,"style":160},"Content-Security-Policy-Report-Only:\n  default-src 'self';\n  script-src 'nonce-{NONCE}' 'strict-dynamic';\n  object-src 'none';\n  base-uri 'none';\n","id=\"iwljrk\"",[84,7464,7465,7470,7474,7478,7482],{"__ignoreMap":160},[164,7466,7467],{"class":166,"line":167},[164,7468,7469],{},"Content-Security-Policy-Report-Only:\n",[164,7471,7472],{"class":166,"line":197},[164,7473,7205],{},[164,7475,7476],{"class":166,"line":1187},[164,7477,7210],{},[164,7479,7480],{"class":166,"line":1193},[164,7481,6945],{},[164,7483,7484],{"class":166,"line":1199},[164,7485,6950],{},[16,7487,7488,7489,991],{},"Report-only mode policy’ni tekshiradi, lekin bloklashni majburiy qo‘llamaydi. Brauzer console xabarlari va CSP report’lar proposed policy real holatda nimani bloklashini ko‘rsatadi. (",[37,7490,6917],{"href":7491,"rel":7492},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FSecurity\u002FPractical_implementation_guides\u002FCSP?utm_source=chatgpt.com",[41],[16,7494,7495],{},"Amaliy rollout quyidagicha ko‘rinadi:",[16,7497,7498],{},[30,7499,7500],{},"Kuzatish → violation’larni tasniflash → qonuniy dependency’larni tuzatish → policy’ni kuchaytirish → enforcement’ni yoqish → monitoring’ni davom ettirish.",[16,7502,7503],{},"Report’da chiqqan har bir hostname’ni avtomatik ravishda allowlist’ga qo‘shmang. Violation eski kod, kutilmagan third-party dependency, browser extension, injection urinish yoki haqiqiy konfiguratsiya talabini ko‘rsatishi mumkin.",[11,7505,7507],{"id":7506},"csp-reporting","CSP Reporting",[16,7509,7510,7511,7514,7515,7518],{},"Zamonaviy CSP reporting Reporting API, ",[84,7512,7513],{},"Reporting-Endpoints"," header va CSP’dagi ",[84,7516,7517],{},"report-to"," directive’dan foydalanadi:",[154,7520,7523],{"className":488,"code":7521,"language":490,"meta":7522,"style":160},"Reporting-Endpoints:\n  csp=\"https:\u002F\u002Fexample.com\u002Fcsp-reports\"\n\nContent-Security-Policy:\n  default-src 'self';\n  report-to csp;\n","id=\"r6midh\"",[84,7524,7525,7530,7535,7539,7543,7547],{"__ignoreMap":160},[164,7526,7527],{"class":166,"line":167},[164,7528,7529],{},"Reporting-Endpoints:\n",[164,7531,7532],{"class":166,"line":197},[164,7533,7534],{},"  csp=\"https:\u002F\u002Fexample.com\u002Fcsp-reports\"\n",[164,7536,7537],{"class":166,"line":1187},[164,7538,1190],{"emptyLinePlaceholder":941},[164,7540,7541],{"class":166,"line":1193},[164,7542,6935],{},[164,7544,7545],{"class":166,"line":1199},[164,7546,7205],{},[164,7548,7549],{"class":166,"line":2153},[164,7550,7551],{},"  report-to csp;\n",[16,7553,7554,7555,5725,7558,7560,7561,7563,7564,991],{},"CSP Level 3’da ",[84,7556,7557],{},"report-uri",[84,7559,7517],{}," foydasiga deprecated deb hisoblanadi. Shunga qaramay, MDN’ning amaldagi yo‘riqnomasida ",[84,7562,7517],{},"’ni to‘liq qo‘llamaydigan brauzerlar bilan moslik kerak bo‘lgan holatlarda ikkala variant ham ko‘rsatiladi. (",[37,7565,6621],{"href":6821,"rel":7566},[41],[16,7568,7569],{},"Report’larning o‘zini ham ishonchsiz input deb hisoblash kerak. Logging infrastructure har bir report’ga ishonib ketmasligi, balki uni validate qilishi, rate-limit qo‘llashi va xavfsiz saqlashi kerak.",[11,7571,7573,7574],{"id":7572},"header-yoki-meta","Header yoki ",[84,7575,7576],{},"\u003Cmeta>",[16,7578,7579],{},"CSP’ni quyidagicha ham berish mumkin:",[154,7581,7584],{"className":156,"code":7582,"language":158,"meta":7583,"style":160},"\u003Cmeta\n  http-equiv=\"Content-Security-Policy\"\n  content=\"default-src 'self'\"\n>\n","id=\"pgtsqy\"",[84,7585,7586,7593,7603,7613],{"__ignoreMap":160},[164,7587,7588,7590],{"class":166,"line":167},[164,7589,171],{"class":170},[164,7591,7592],{"class":174},"meta\n",[164,7594,7595,7598,7600],{"class":166,"line":197},[164,7596,7597],{"class":178},"  http-equiv",[164,7599,182],{"class":170},[164,7601,7602],{"class":185},"\"Content-Security-Policy\"\n",[164,7604,7605,7608,7610],{"class":166,"line":1187},[164,7606,7607],{"class":178},"  content",[164,7609,182],{"class":170},[164,7611,7612],{"class":185},"\"default-src 'self'\"\n",[164,7614,7615],{"class":166,"line":1193},[164,7616,194],{"class":170},[16,7618,7619],{},"lekin production uchun odatda HTTP header afzal.",[16,7621,7622,7623,698,7625,586,7627,7630,7631,991],{},"Meta orqali berilgan CSP’da muhim cheklovlar mavjud. U report-only policy bera olmaydi, CSP Level 3 esa ",[84,7624,6791],{},[84,7626,7557],{},[84,7628,7629],{},"sandbox"," kabi directive’lar meta mexanizmi orqali qo‘llab-quvvatlanmasligini belgilaydi. Bundan tashqari, meta policy brauzer uni uchratishidan oldin qayta ishlangan resurslarni orqaga qarab boshqara olmaydi. (",[37,7632,6621],{"href":6821,"rel":7633},[41],[11,7635,7637],{"id":7636},"cspdagi-keng-tarqalgan-xatolar","CSP’dagi keng tarqalgan xatolar",[16,7639,7640,7641,7643,7644,5725,7647,586,7649,7651],{},"Eng ko‘p uchraydigan muhandislik xatolari syntax bilan emas, trust model bilan bog‘liq: juda katta hostname ro‘yxatini kuchli himoya deb hisoblash, nonce qiymatlarini qayta ishlatish, har bir violation’dan keyin domain’larni avtomatik qo‘shish, xatolarni yo‘qotish uchun ",[84,7642,7445],{}," ni yoqish yoki ",[84,7645,7646],{},"default-src 'none'",[84,7648,6791],{},[84,7650,6781],{}," kabi directive’larni ham avtomatik sozlaydi deb o‘ylash.",[16,7653,7654,7655,991],{},"Yana bir nozik xato — bir nechta CSP policy yuborib, ikkinchisi birinchisini yumshatadi deb kutish. Bir nechta enforced policy birgalikda qo‘llanadi: request barcha tegishli policy talablariga javob berishi kerak. Ikkinchi header oldingi qat’iy policy’ni shunchaki override qila olmaydi. (",[37,7656,6621],{"href":6821,"rel":7657},[41],[11,7659,742],{"id":741},[16,7661,7662],{},"Generic CSP generator natijasini ko‘chirib olishdan ko‘ra, application’ning real resource graph’idan boshlang.",[16,7664,7665,7666,7668,7669,698,7671,698,7673,586,7675,7677],{},"Dinamik rendering qilinadigan application’lar uchun har bir response’da to‘g‘ri generatsiya qilinadigan nonce va strict ",[84,7667,6684],{}," afzal. Statik application’lar uchun hash-based policy’ni ko‘rib chiqish mumkin. ",[84,7670,6757],{},[84,7672,6767],{},[84,7674,6781],{},[84,7676,6791],{}," kabi xavfsizlikka sezgir directive’larni product’ning real talablariga mos ravishda aniq belgilang.",[16,7679,7680],{},"Avval proposed policy’ni report-only mode’da ishga tushiring, violation’larni tekshiring, mos kelmaydigan JavaScript pattern’larni olib tashlang va shundan keyingina enforcement’ni yoqing.",[16,7682,7683],{},"Eng muhimi, CSP’ning xavfsizlik modelidagi o‘rnini to‘g‘ri tushunish kerak: bu brauzer tomonidan majburiy qo‘llanadigan containment mexanizmi, XSS zaifliklarini tuzatmasdan qoldirish uchun ruxsat emas.",[11,7685,759],{"id":758},[2028,7687,7689],{"id":7688},"csp-barcha-xss-hujumlarini-toxtatadimi","CSP barcha XSS hujumlarini to‘xtatadimi?",[16,7691,7692,7693,991],{},"Yo‘q. CSP script bajarilishini sezilarli cheklashi va ko‘plab XSS zaifliklarining ta’sirini kamaytirishi mumkin, ammo trusted script’larning o‘zi ekspluatatsiya qilinadigan xatti-harakatni taqdim etsa, bypass’lar hali ham mumkin. Input handling, context-aware output encoding, sanitization va xavfsiz application dizayni baribir zarur. (",[37,7694,1851],{"href":6631,"rel":7695},[41],[2028,7697,7699,7700,7702],{"id":7698},"har-bir-sayt-default-src-none-ishlatishi-kerakmi","Har bir sayt ",[84,7701,7646],{}," ishlatishi kerakmi?",[16,7704,7705,7706,7708],{},"Har doim emas. Bu kuchli boshlang‘ich yondashuv, chunki undan keyin resurslarni ataylab ruxsatlash kerak bo‘ladi, ammo yakuniy directive’lar baribir application arxitekturasiga mos bo‘lishi kerak. Ayrim directive’lar ",[84,7707,6659],{}," qiymatini meros qilmaydi.",[2028,7710,7712],{"id":7711},"nonce-yoki-hash-qaysi-birini-ishlatish-kerak","Nonce yoki hash — qaysi birini ishlatish kerak?",[16,7714,7715,7716,991],{},"Agar server har bir response uchun HTML generatsiya qilib, uni o‘zgartira olsa, nonce ishlating. Barqaror statik HTML uchun hash ko‘pincha qulayroq. (",[37,7717,6917],{"href":6915,"rel":7718},[41],[2028,7720,7722],{"id":7721},"cspni-nginxda-sozlash-mumkinmi","CSP’ni Nginx’da sozlash mumkinmi?",[16,7724,7725],{},"Ha. Nginx CSP header’larini yuborishi mumkin, ammo nonce-based CSP odatda application yoki rendering layer bilan hamkorlikni talab qiladi, chunki yangi nonce bir vaqtning o‘zida response header’da ham, ruxsat berilgan HTML ichida ham bo‘lishi kerak.",[2028,7727,7729],{"id":7728},"csp-ishlayotganini-qanday-tekshiraman","CSP ishlayotganini qanday tekshiraman?",[16,7731,7732],{},"Amaldagi response header’larni tekshiring, application’dagi kutilgan flow’larni sinab ko‘ring, browser DevTools’da CSP violation’larni kuzating, report-only davrida report’larni to‘plang, ataylab taqiqlangan resurslarni sinab ko‘ring va enforcement yoqilgandan keyin testlarni takrorlang.",[11,7734,826],{"id":825},[16,7736,7737],{},"Foydali CSP shunchaki trusted domain’lar ro‘yxati emas. Bu brauzer tomonidan majburiy qo‘llanadigan aniq trust model.",[16,7739,7740],{},"Ko‘plab zamonaviy application’lar uchun eng kuchli amaliy yondashuv — cryptographic nonce yoki hash asosidagi strict policy va framing, form submission, plugin hamda boshqa resurslarni cheklaydigan directive’lardan foydalanish. Uni bosqichma-bosqich joriy qiling, enforcement’dan oldin violation’larni o‘lchang va har bir istisnoni ro‘yxatga yana bitta hostname qo‘shish emas, balki arxitektura qarori sifatida ko‘ring.",[11,7742,1705],{"id":1704},[838,7744,7745,7758,7771,7783,7795,7807,7823],{},[841,7746,7747,7750,7751,7398,7754],{},[30,7748,7749],{},"W3C — Content Security Policy Level 3",", Working Draft, August 13, 2026. (",[37,7752,6621],{"href":6821,"rel":7753},[41],[37,7755,7757],{"href":6821,"rel":7756},[41],"W3C CSP Level 3 specification",[841,7759,7760,7763,7764,7398,7767],{},[30,7761,7762],{},"MDN Web Docs — Content Security Policy (CSP)",", accessed September 19, 2026. (",[37,7765,6917],{"href":6915,"rel":7766},[41],[37,7768,7770],{"href":6915,"rel":7769},[41],"MDN CSP Guide",[841,7772,7773,7763,7776,7398,7779],{},[30,7774,7775],{},"MDN Web Docs — Content-Security-Policy header",[37,7777,6917],{"href":7174,"rel":7778},[41],[37,7780,7782],{"href":7174,"rel":7781},[41],"MDN CSP Header Reference",[841,7784,7785,7763,7788,7398,7791],{},[30,7786,7787],{},"web.dev — Mitigate cross-site scripting (XSS) with a strict Content Security Policy (CSP)",[37,7789,1851],{"href":6631,"rel":7790},[41],[37,7792,7794],{"href":6631,"rel":7793},[41],"web.dev Strict CSP Guide",[841,7796,7797,7763,7800,7398,7803],{},[30,7798,7799],{},"MDN Web Docs — Content Security Policy implementation",[37,7801,6917],{"href":7491,"rel":7802},[41],[37,7804,7806],{"href":7491,"rel":7805},[41],"MDN CSP Implementation Guide",[841,7808,7809,7763,7815,7398,7819],{},[30,7810,7811,7812,7814],{},"MDN Web Docs — ",[84,7813,6791],{}," directive",[37,7816,6917],{"href":7817,"rel":7818},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FReference\u002FHeaders\u002FContent-Security-Policy\u002Fframe-ancestors?utm_source=chatgpt.com",[41],[37,7820,7822],{"href":7817,"rel":7821},[41],"MDN frame-ancestors Reference",[841,7824,7825,7763,7830,7398,7834],{},[30,7826,7811,7827],{},[84,7828,7829],{},"Content-Security-Policy-Report-Only",[37,7831,6917],{"href":7832,"rel":7833},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FReference\u002FHeaders\u002FContent-Security-Policy-Report-Only?utm_source=chatgpt.com",[41],[37,7835,7837],{"href":7832,"rel":7836},[41],"MDN CSP Report-Only Reference",[7839,7840],"hr",{},[11,7842,7844],{"id":7843},"tahririyat-qaydlari","Tahririyat qaydlari",[16,7846,7847,7850],{},[30,7848,7849],{},"SEO TITLE:","\nContent Security Policy (CSP): amaliy muhandislik qo‘llanmasi",[16,7852,7853,7856],{},[30,7854,7855],{},"META DESCRIPTION:","\nContent Security Policy qanday ishlashi, strict CSP’da nonce va hash’dan qanday foydalanish, uni xavfsiz joriy qilish, violation’larni aniqlash va keng tarqalgan CSP xatolaridan qochishni o‘rganing.",[16,7858,7859,7862],{},[30,7860,7861],{},"SUGGESTED SLUG:",[84,7863,7864],{},"content-security-policy-csp-guide",[16,7866,7867,7870],{},[30,7868,7869],{},"PRIMARY SEARCH INTENT:","\nCSP’ni tushunish va amaliy Content Security Policy’ni loyihalash, joriy qilish, test qilish hamda xavfsiz ishga tushirishni o‘rganish.",[16,7872,7873,7876],{},[30,7874,7875],{},"PRIMARY ENTITY:","\nContent Security Policy (CSP)",[16,7878,7879,7882],{},[30,7880,7881],{},"PARENT ENTITY:","\nWeb Application Security",[16,7884,7885],{},[30,7886,7887],{},"RELATED ENTITIES:",[3335,7889,7890,7893,7896,7900,7904,7906,7909,7913,7917,7921,7924,7927],{},[841,7891,7892],{},"Cross-Site Scripting (XSS)",[841,7894,7895],{},"CSP Level 3",[841,7897,7898],{},[84,7899,6684],{},[841,7901,7902],{},[84,7903,6659],{},[841,7905,6956],{},[841,7907,7908],{},"cryptographic hash",[841,7910,7911],{},[84,7912,7075],{},[841,7914,7915],{},[84,7916,6791],{},[841,7918,7919],{},[84,7920,7517],{},[841,7922,7923],{},"Reporting API",[841,7925,7926],{},"Trusted Types",[841,7928,7929],{},"Subresource Integrity",[16,7931,7932],{},[30,7933,7934],{},"SUGGESTED INTERNAL LINKS:",[3335,7936,7937,7942,7947,7952,7957],{},[841,7938,7939],{},[164,7940,7941],{},"INTERNAL LINK: Cross-Site Scripting nima?",[841,7943,7944],{},[164,7945,7946],{},"INTERNAL LINK: HTTP Security Headers Explained",[841,7948,7949],{},[164,7950,7951],{},"INTERNAL LINK: Subresource Integrity Explained",[841,7953,7954],{},[164,7955,7956],{},"INTERNAL LINK: HSTS Explained",[841,7958,7959],{},[164,7960,7961],{},"INTERNAL LINK: Reverse Proxy Architecture",[16,7963,7964],{},[30,7965,7966],{},"SUGGESTED CHILD ARTICLES:",[3335,7968,7969,7972,7975,7980,7985,7988,7991],{},[841,7970,7971],{},"CSP Nonces Explained",[841,7973,7974],{},"CSP Hashes Explained",[841,7976,7977,7979],{},[84,7978,7075],{}," Explained",[841,7981,7982,7983],{},"CSP Reporting and ",[84,7984,7517],{},[841,7986,7987],{},"CSP for Nuxt Applications",[841,7989,7990],{},"CSP for Symfony Applications",[841,7992,7993],{},"CSP With Nginx",[16,7995,7996],{},[30,7997,7998],{},"SUGGESTED SIBLING ARTICLES:",[3335,8000,8001,8004,8007,8010,8013],{},[841,8002,8003],{},"HSTS Explained",[841,8005,8006],{},"CORS Explained",[841,8008,8009],{},"Same-Origin Policy Explained",[841,8011,8012],{},"Subresource Integrity Explained",[841,8014,8015],{},"Trusted Types Explained",[16,8017,8018,8021,8024,8025,8027],{},[30,8019,8020],{},"VISUAL OPPORTUNITIES:",[30,8022,8023],{},"HTML → CSP policy → allowed resource \u002F blocked resource"," oqimini ko‘rsatadigan oddiy browser-request diagrammasi; HTTP header va ruxsat berilgan ",[84,8026,7036],{}," elementida bir xil tasodifiy qiymatni ko‘rsatadigan nonce flow; hamda domain allowlist CSP bilan nonce\u002Fhash asosidagi strict CSP’ni taqqoslaydigan ixcham diagramma. Generic hacker, laptop, neon code yoki cybersecurity stock tasvirlaridan foydalanmaslik kerak.",[16,8029,8030,8033],{},[30,8031,8032],{},"PROGRAMMATIC EXPANSION:","\nCSP implementatsiyasi haqiqatda farq qiladigan joylarda framework’ga xos alohida sahifalar yaratish asosli: CSP × Nuxt, CSP × Symfony, CSP × Next.js, CSP × Nginx va CSP × Cloudflare.",[16,8035,8036,8039,8040,8043],{},[30,8037,8038],{},"ORIGINAL RESEARCH OPPORTUNITIES:","\nSeoNest production framework’larni strict CSP bilan test qilib, qaysi default’lar inline script generatsiya qilishi, ",[84,8041,8042],{},"unsafe-eval"," talab qilishi, avtomatik nonce qo‘llab-quvvatlashi yoki third-party dependency’lar sabab kutilmagan CSP violation yaratishini hujjatlashtirishi mumkin.",[16,8045,8046,8049],{},[30,8047,8048],{},"BRIEF BASIS:","\nMavzu, til, dalillar ierarxiyasi, chuqurlik, publication structure va tahririyat talablari taqdim etilgan SeoNest brief’iga asoslangan.",[915,8051,8052],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":160,"searchDepth":197,"depth":197,"links":8054},[8055,8056,8057,8058,8059,8060,8062,8063,8065,8066,8067,8069,8070,8071,8079,8080,8081],{"id":6612,"depth":197,"text":6613},{"id":6635,"depth":197,"text":6636},{"id":6825,"depth":197,"text":6826},{"id":6920,"depth":197,"text":6921},{"id":7023,"depth":197,"text":7024},{"id":7072,"depth":197,"text":8061},"strict-dynamic qanday ishlaydi?",{"id":7181,"depth":197,"text":7182},{"id":7276,"depth":197,"text":8064},"unsafe-inline dan saqlaning",{"id":7451,"depth":197,"text":7452},{"id":7506,"depth":197,"text":7507},{"id":7572,"depth":197,"text":8068},"Header yoki \u003Cmeta>",{"id":7636,"depth":197,"text":7637},{"id":741,"depth":197,"text":742},{"id":758,"depth":197,"text":759,"children":8072},[8073,8074,8076,8077,8078],{"id":7688,"depth":1187,"text":7689},{"id":7698,"depth":1187,"text":8075},"Har bir sayt default-src 'none' ishlatishi kerakmi?",{"id":7711,"depth":1187,"text":7712},{"id":7721,"depth":1187,"text":7722},{"id":7728,"depth":1187,"text":7729},{"id":825,"depth":197,"text":826},{"id":1704,"depth":197,"text":1705},{"id":7843,"depth":197,"text":7844},"Content Security Policy qanday ishlashi, strict CSP’da nonce va hash’dan qanday foydalanish, uni xavfsiz joriy qilish, violation’larni aniqlash va keng tarqalgan CSP xatolaridan qochishni o‘rganing.","\u002Fcsp-guide.png","CSP rasmi ",{},"\u002Fblog\u002Fuz\u002Fcsp-qollanmasi","2026-09-19",{"title":6607,"description":8082},"csp-qollanmasi","blog\u002Fuz\u002Fcsp-qollanmasi","content-security-policy","qWkC9MuBwG61kzoN04jKNf_1JFvja1t_L1uniQV25Og",{"id":8094,"title":8095,"author":6,"body":8096,"category":5758,"description":9016,"draft":939,"extension":940,"featured":941,"image":9017,"imageAlt":9018,"locale":944,"meta":9019,"navigation":941,"path":9020,"publishedAt":8087,"seo":9021,"slug":8100,"stem":9022,"translationKey":9023,"updatedAt":8087,"__hash__":9024},"blog\u002Fblog\u002Fuz\u002Fentity-seo-nima.md","Entity SEO nima?",{"type":8,"value":8097,"toc":8998},[8098,8101,8109,8112,8114,8119,8125,8131,8135,8141,8144,8213,8216,8222,8228,8234,8238,8241,8244,8249,8268,8275,8282,8287,8291,8294,8297,8302,8305,8322,8325,8328,8331,8335,8338,8345,8348,8375,8378,8385,8392,8397,8401,8404,8406,8412,8418,8421,8426,8430,8437,8440,8546,8570,8581,8584,8589,8593,8596,8606,8609,8615,8618,8622,8625,8630,8633,8636,8639,8642,8649,8653,8656,8714,8716,8723,8730,8747,8754,8757,8759,8765,8768,8773,8776,8779,8781,8785,8791,8795,8798,8802,8811,8815,8821,8825,8828,8830,8841,8847,8850,8852,8995],[11,8099,8095],{"id":8100},"entity-seo-nima",[16,8102,8103,8104,991],{},"Qidiruv tizimlari sahifalarni faqat kalit so‘zlar to‘plami sifatida ko‘rib chiqmaydi. Ular bu so‘zlar nimani anglatayotganini ham tushunishga harakat qiladi: odamlar, kompaniyalar, mahsulotlar, joylar, tushunchalar, hodisalar va ular o‘rtasidagi bog‘lanishlar. Google bu o‘zgarishni 2012-yilda Knowledge Graph’ni taqdim etar ekan, “strings emas, things” — ya’ni satrlarni emas, real obyektlarni tushunishga o‘tish sifatida izohlagan. (",[37,8105,8108],{"href":8106,"rel":8107},"https:\u002F\u002Fblog.google\u002Fproducts-and-platforms\u002Fproducts\u002Fsearch\u002Fintroducing-knowledge-graph-things-not\u002F?utm_source=chatgpt.com",[41],"blog.google",[16,8110,8111],{},"Entity SEO — shu obyektlar va ular orasidagi aloqalarni qidiruv tizimlari uchun tushunarliroq qilishga qaratilgan amaliy yondashuv. U aniq kontent, bir xil nomlash, mantiqiy ichki aloqalar, structured data va ishonchli identifikatsiya signallarini birlashtiradi. Entity SEO Google’ning alohida ranking tizimi ham, yuqori pozitsiyaga chiqish uchun hujjatlashtirilgan tezkor usul ham emas.",[11,8113,25],{"id":24},[16,8115,8116],{},[30,8117,8118],{},"Entity SEO — sayt bilan bog‘liq odamlar, tashkilotlar, mahsulotlar, joylar, mavzular va boshqa entity’larni qidiruv tizimlari uchun aniq va bir ma’noli qilish amaliyotidir.",[16,8120,8121,8122],{},"Faqat aniq kalit iboralarni optimallashtirish o‘rniga Entity SEO quyidagi savollarga e’tibor qaratadi: ",[845,8123,8124],{},"Bu sahifa nima haqida? Bu nom qaysi real obyektni anglatadi? U boshqa entity’lar bilan qanday bog‘langan? Bu kontentni kim yaratgan?",[16,8126,8127,8128,991],{},"Google’ning ochiq hujjatlarida entity’lar “Entity SEO” nomli alohida funksiya sifatida emas, balki Knowledge Graph va structured data kabi tizimlar orqali tushuntiriladi. (",[37,8129,8108],{"href":8106,"rel":8130},[41],[11,8132,8134],{"id":8133},"entity-nima","Entity nima?",[16,8136,8137,8140],{},[30,8138,8139],{},"Entity"," — boshqa narsalardan alohida aniqlash mumkin bo‘lgan mustaqil obyekt yoki tushuncha.",[16,8142,8143],{},"Misollar:",[48,8145,8146,8155],{},[51,8147,8148],{},[54,8149,8150,8153],{},[57,8151,8152],{},"Entity turi",[57,8154,4207],{},[64,8156,8157,8165,8173,8181,8189,8197,8205],{},[54,8158,8159,8162],{},[69,8160,8161],{},"Odam",[69,8163,8164],{},"Tim Berners-Lee",[54,8166,8167,8170],{},[69,8168,8169],{},"Tashkilot",[69,8171,8172],{},"Google",[54,8174,8175,8178],{},[69,8176,8177],{},"Mahsulot",[69,8179,8180],{},"iPhone 17",[54,8182,8183,8186],{},[69,8184,8185],{},"Joy",[69,8187,8188],{},"Tashkent",[54,8190,8191,8194],{},[69,8192,8193],{},"Texnologiya",[69,8195,8196],{},"PostgreSQL",[54,8198,8199,8202],{},[69,8200,8201],{},"Tushuncha",[69,8203,8204],{},"Search engine optimization",[54,8206,8207,8210],{},[69,8208,8209],{},"Hodisa",[69,8211,8212],{},"Google I\u002FO",[16,8214,8215],{},"Bu yerda eng muhim narsa — identifikatsiya.",[16,8217,7254,8218,8221],{},[30,8219,8220],{},"Apple"," so‘zini olaylik. U meva yoki Apple Inc. kompaniyasini anglatishi mumkin. Qidiruv tizimiga aynan qaysi entity nazarda tutilganini aniqlash uchun yetarli kontekst kerak.",[16,8223,8224,8225,991],{},"Google Knowledge Graph real entity’lar va ular o‘rtasidagi bog‘lanishlar asosida yaratilgan. Google Knowledge Graph Search API ham entity’larni nom, identifikator, tur, tavsif va URL kabi xususiyatlar orqali ifodalaydi. (",[37,8226,8108],{"href":8106,"rel":8227},[41],[16,8229,8230,8231,4890],{},"Bir ehtimoliy entity’ni boshqasidan ajratish jarayoni odatda ",[30,8232,8233],{},"entity disambiguation",[11,8235,8237],{"id":8236},"nega-entity-seo-muhim","Nega Entity SEO muhim?",[16,8239,8240],{},"An’anaviy keyword matching hanuz muhim, ammo so‘zlarning o‘zi noaniq bo‘lishi mumkin.",[16,8242,8243],{},"Tasavvur qiling, sahifada quyidagi jumla bor:",[4499,8245,8246],{},[16,8247,8248],{},"Mercury has a very high surface temperature.",[16,8250,8251,8254,8255,698,8258,698,8261,586,8264,8267],{},[845,8252,8253],{},"Mercury"," so‘zi sayyora, kimyoviy element, avtomobil brendi yoki boshqa entity’ni anglatishi mumkin. ",[845,8256,8257],{},"planet",[845,8259,8260],{},"Sun",[845,8262,8263],{},"orbit",[845,8265,8266],{},"surface temperature"," kabi atrofdagi tushunchalar qaysi entity nazarda tutilganini ancha ravshan qiladi.",[16,8269,8270,8271,8274],{},"Shuning uchun entity’ga yo‘naltirilgan optimizatsiya shunchaki bog‘liq so‘zlarni mexanik ravishda qo‘shish orqali emas, balki mavzuni to‘g‘ri tushunish uchun yetarli faktik va strukturaviy kontekst yaratish orqali ",[30,8272,8273],{},"aniqlikni"," oshiradi.",[16,8276,8277,8278,991],{},"Bu ayniqsa tashkilotlar, mualliflar, mahsulotlar va boshqa nomlangan entity’lar uchun muhim. Google Organization structured data tashkilot haqidagi ma’muriy ma’lumotlarni tushunishga va uni boshqa tashkilotlardan ajratishga yordam berishi mumkinligini aniq aytadi. (",[37,8279,1966],{"href":8280,"rel":8281},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Forganization?authuser=19&utm_source=chatgpt.com",[41],[16,8283,8284],{},[164,8285,8286],{},"INTERNAL LINK: Google Knowledge Graph qanday ishlaydi",[11,8288,8290],{"id":8289},"entity-seo-qanday-ishlaydi","Entity SEO qanday ishlaydi?",[16,8292,8293],{},"Entity SEO’ni graph sifatida tasavvur qilish qulay.",[16,8295,8296],{},"SeoNest nomli SEO agentligini olaylik:",[16,8298,8299],{},[30,8300,8301],{},"SeoNest → Organization",[16,8303,8304],{},"Keyin SeoNest quyidagilar bilan bog‘lanishi mumkin:",[16,8306,8307,8310,8313,8316,8319],{},[30,8308,8309],{},"SeoNest → provides → SEO Engineering",[30,8311,8312],{},"SeoNest → provides → Web Development",[30,8314,8315],{},"SeoNest → publishes → Technical SEO Articles",[30,8317,8318],{},"Article → written by → Author",[30,8320,8321],{},"Author → works with → SeoNest",[16,8323,8324],{},"Alohida sahifalar ma’lumot beradi, lekin ular orasidagi bog‘lanishlar ham kontekst yaratadi.",[16,8326,8327],{},"Qidiruv tizimlari sahifa kontenti, sayt strukturasi, linklar, structured data va internetda mavjud boshqa signallardan ma’lumot olishi mumkin. Google bu signallarning barchasini aynan qanday birlashtirishi ochiq hujjatlarda to‘liq tushuntirilmagan, shuning uchun ma’lum bir entity bog‘lanishi avtomatik ravishda ranking’ni oshiradi deb aytish noto‘g‘ri bo‘ladi.",[16,8329,8330],{},"Amaliy maqsad oddiyroq: muhim aloqalarni aniq va izchil ko‘rsatish.",[11,8332,8334],{"id":8333},"kontent-kontekst-yaratadi","Kontent kontekst yaratadi",[16,8336,8337],{},"Entity optimizatsiyasi avvalo ko‘rinadigan kontentdan boshlanadi.",[16,8339,8340,8341,8344],{},"Agar sahifa PostgreSQL performance haqida bo‘lsa, ",[845,8342,8343],{},"PostgreSQL performance"," iborasini o‘nlab marta takrorlash mavzuni yaxshi tushuntirib bermaydi.",[16,8346,8347],{},"Haqiqatan foydali maqolada tabiiy ravishda quyidagilar tilga olinishi mumkin:",[3335,8349,8350,8352,8355,8358,8361,8366,8369,8372],{},[841,8351,8196],{},[841,8353,8354],{},"database queries",[841,8356,8357],{},"indexes",[841,8359,8360],{},"query planner",[841,8362,8363],{},[84,8364,8365],{},"EXPLAIN",[841,8367,8368],{},"execution plans",[841,8370,8371],{},"sequential scans",[841,8373,8374],{},"B-tree indexes",[16,8376,8377],{},"Bu tushunchalar SEO vositasi “semantic keywords” ro‘yxatini bergani uchun emas, balki mavzuni tushuntirish uchun zarur bo‘lgani sababli paydo bo‘ladi.",[16,8379,8380,8381,991],{},"Bu muhim farq. Google ranking’ni manipulyatsiya qilish uchun g‘ayritabiiy takrorlashni keyword stuffing sifatida tasniflaydi. (",[37,8382,1966],{"href":8383,"rel":8384},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fessentials\u002Fspam-policies?utm_source=chatgpt.com",[41],[16,8386,8387,8388,8391],{},"Shuning uchun Entity SEO semantik aniqlikni sun’iy ravishda ko‘proq so‘z qo‘shish bilan emas, ",[30,8389,8390],{},"yaxshiroq ma’lumot"," orqali oshirishi kerak.",[16,8393,8394],{},[164,8395,8396],{},"INTERNAL LINK: Semantic SEO nima?",[11,8398,8400],{"id":8399},"ichki-linklar-boglanishlarni-korsatadi","Ichki linklar bog‘lanishlarni ko‘rsatadi",[16,8402,8403],{},"Internal linking mavzular o‘rtasidagi aloqalarni ham foydalanuvchilar, ham crawler’lar uchun tushunarliroq qiladi.",[16,8405,1265],{},[154,8407,8410],{"className":8408,"code":8409,"language":1991,"meta":160},[1989],"Technical SEO\n├── Crawling\n│   ├── robots.txt\n│   └── XML Sitemap\n├── Indexing\n│   ├── Canonical URLs\n│   └── Noindex\n└── Structured Data\n    ├── Organization Schema\n    └── Article Schema\n",[84,8411,8409],{"__ignoreMap":160},[16,8413,8414,8415,8417],{},"Bunday struktura bir-biridan uzilgan maqolalar to‘plamidan ko‘ra ko‘proq ma’no beradi. U ",[84,8416,1066],{}," crawling’ning kengroq mavzusiga tegishli ekanini, canonicalization esa asosan indexing va duplicate URL’larni boshqarish bilan bog‘liqligini ko‘rsatadi.",[16,8419,8420],{},"Maqsad har qanday ozgina bog‘liq sahifalar o‘rtasida yuzlab link yaratish emas. Linklar o‘quvchi uchun haqiqatan foydali bo‘lgan aloqalarni ifodalashi kerak.",[16,8422,8423],{},[164,8424,8425],{},"INTERNAL LINK: SEO uchun internal linking arxitekturasi",[11,8427,8429],{"id":8428},"structured-data-entitylarni-aniq-qiladi","Structured Data entity’larni aniq qiladi",[16,8431,8432,8433,991],{},"Structured data sahifa kontenti haqida machine-readable ma’lumot beradi. Google structured data sahifa mazmunini tushunishga yordam berishini va ayrim kengaytirilgan Search ko‘rinishlariga mos bo‘lish imkonini berishini aytadi. (",[37,8434,1966],{"href":8435,"rel":8436},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance?utm_source=chatgpt.com",[41],[16,8438,8439],{},"Tashkilot uchun soddalashtirilgan JSON-LD implementatsiyasi quyidagicha ko‘rinishi mumkin:",[154,8441,8445],{"className":8442,"code":8443,"language":8444,"meta":160,"style":160},"language-json shiki shiki-themes github-light github-dark","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Organization\",\n  \"@id\": \"https:\u002F\u002Fexample.com\u002F#organization\",\n  \"name\": \"Example Company\",\n  \"url\": \"https:\u002F\u002Fexample.com\u002F\",\n  \"logo\": \"https:\u002F\u002Fexample.com\u002Flogo.png\",\n  \"sameAs\": [\n    \"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fexample\"\n  ]\n}\n","json",[84,8446,8447,8452,8464,8476,8488,8500,8512,8524,8532,8537,8542],{"__ignoreMap":160},[164,8448,8449],{"class":166,"line":167},[164,8450,8451],{"class":170},"{\n",[164,8453,8454,8457,8459,8462],{"class":166,"line":197},[164,8455,8456],{"class":1350},"  \"@context\"",[164,8458,2181],{"class":170},[164,8460,8461],{"class":185},"\"https:\u002F\u002Fschema.org\"",[164,8463,2622],{"class":170},[164,8465,8466,8469,8471,8474],{"class":166,"line":1187},[164,8467,8468],{"class":1350},"  \"@type\"",[164,8470,2181],{"class":170},[164,8472,8473],{"class":185},"\"Organization\"",[164,8475,2622],{"class":170},[164,8477,8478,8481,8483,8486],{"class":166,"line":1193},[164,8479,8480],{"class":1350},"  \"@id\"",[164,8482,2181],{"class":170},[164,8484,8485],{"class":185},"\"https:\u002F\u002Fexample.com\u002F#organization\"",[164,8487,2622],{"class":170},[164,8489,8490,8493,8495,8498],{"class":166,"line":1199},[164,8491,8492],{"class":1350},"  \"name\"",[164,8494,2181],{"class":170},[164,8496,8497],{"class":185},"\"Example Company\"",[164,8499,2622],{"class":170},[164,8501,8502,8505,8507,8510],{"class":166,"line":2153},[164,8503,8504],{"class":1350},"  \"url\"",[164,8506,2181],{"class":170},[164,8508,8509],{"class":185},"\"https:\u002F\u002Fexample.com\u002F\"",[164,8511,2622],{"class":170},[164,8513,8514,8517,8519,8522],{"class":166,"line":2601},[164,8515,8516],{"class":1350},"  \"logo\"",[164,8518,2181],{"class":170},[164,8520,8521],{"class":185},"\"https:\u002F\u002Fexample.com\u002Flogo.png\"",[164,8523,2622],{"class":170},[164,8525,8526,8529],{"class":166,"line":2613},[164,8527,8528],{"class":1350},"  \"sameAs\"",[164,8530,8531],{"class":170},": [\n",[164,8533,8534],{"class":166,"line":2625},[164,8535,8536],{"class":185},"    \"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fexample\"\n",[164,8538,8539],{"class":166,"line":2634},[164,8540,8541],{"class":170},"  ]\n",[164,8543,8544],{"class":166,"line":3086},[164,8545,2207],{"class":170},[16,8547,8548,698,8551,698,8554,586,8557,8560,8561,8563,8564,8566,8567,991],{},[84,8549,8550],{},"name",[84,8552,8553],{},"url",[84,8555,8556],{},"logo",[84,8558,8559],{},"sameAs"," kabi property’lar tashkilotni tasvirlaydi. Google ",[84,8562,8553],{}," tashkilotni bir ma’noli aniqlashga yordam berishini va ",[84,8565,8559],{}," boshqa saytlardagi tashkilot haqidagi qo‘shimcha ma’lumot beruvchi URL’larni ko‘rsatishi mumkinligini alohida hujjatlashtirgan. (",[37,8568,1966],{"href":8280,"rel":8569},[41],[16,8571,8572,8573,8575,8576,991],{},"Schema.org ",[84,8574,8559],{},"’ni yanada qat’iyroq tarzda — obyekt identifikatsiyasini bir ma’noli ko‘rsatadigan reference sahifaga URL sifatida ta’riflaydi. (",[37,8577,8580],{"href":8578,"rel":8579},"https:\u002F\u002Fschema.org\u002FsameAs?utm_source=chatgpt.com",[41],"schema.org",[16,8582,8583],{},"Structured data sahifadagi real kontent va unda ifodalangan entity’ni tasvirlashi kerak. U mavjud bo‘lmagan aloqalarni o‘ylab topish uchun ishlatilmasligi kerak.",[16,8585,8586],{},[164,8587,8588],{},"INTERNAL LINK: Structured Data nima?",[11,8590,8592],{"id":8591},"mualliflar-va-tashkilotlarni-boglang","Mualliflar va tashkilotlarni bog‘lang",[16,8594,8595],{},"Entity’lar orasidagi aloqalar mualliflikni ham aniqroq ko‘rsatishi mumkin.",[16,8597,8598,8599,8601,8602,991],{},"Google’ning Article structured data hujjatlari muallifni aniqlashga yordam beradigan type va URL yoki ",[84,8600,8559],{}," kabi ma’lumotlarni ko‘rsatishni tavsiya qiladi. ProfilePage hujjatlari esa odam yoki tashkilotni profil sahifasining main entity’si sifatida ko‘rsatishga imkon beradi. (",[37,8603,1966],{"href":8604,"rel":8605},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Farticle?authuser=19&utm_source=chatgpt.com",[41],[16,8607,8608],{},"Foydali arxitektura quyidagicha bo‘lishi mumkin:",[154,8610,8613],{"className":8611,"code":8612,"language":1991,"meta":160},[1989],"Article\n   ↓ author\nPerson\n   ↓ works for\nOrganization\n",[84,8614,8612],{"__ignoreMap":160},[16,8616,8617],{},"Saytning ko‘rinadigan qismi bu bog‘lanishlarni author page, About page, biografiya va tegishli linklar orqali qo‘llab-quvvatlashi kerak. Faqat yashirin markup’ga tayanish yetarli emas.",[11,8619,8621],{"id":8620},"entity-seo-faqat-schema-emas","Entity SEO faqat Schema emas",[16,8623,8624],{},"Eng keng tarqalgan xatolardan biri:",[16,8626,8627],{},[30,8628,8629],{},"“Schema.org markup qo‘shdim, demak Entity SEO qildim.”",[16,8631,8632],{},"Structured data — faqat bitta komponent.",[16,8634,8635],{},"Saytda texnik jihatdan to‘g‘ri Organization schema bo‘lishi mumkin, ammo ko‘rinadigan kontentda kompaniya nomi turlicha yozilishi, ma’lumotlar eskirgan bo‘lishi, author page’lar zaif bo‘lishi, xizmatlar noaniq tasvirlanishi va maqolalar bir-biridan uzilgan bo‘lishi mumkin.",[16,8637,8638],{},"Bunday holatda identifikatsiya muammosi saqlanib qoladi.",[16,8640,8641],{},"Aksincha, qidiruv tizimlari ko‘plab entity’larni structured data’siz ham tushuna oladi. Schema ayrim faktlarni yanada aniq ko‘rsatishga yordam beradi, lekin u tushunarli kontent yoki yaxshi sayt arxitekturasining o‘rnini bosa olmaydi.",[16,8643,8644,8645,991],{},"Google structured data qo‘shilishi albatta ma’lum bir Search funksiyasini chiqarib beradi, deb kafolat bermaydi. (",[37,8646,1966],{"href":8647,"rel":8648},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fshipping-policy?utm_source=chatgpt.com",[41],[11,8650,8652],{"id":8651},"entity-seo-uchun-amaliy-jarayon","Entity SEO uchun amaliy jarayon",[16,8654,8655],{},"Juda katta ro‘yxat tuzishdan ko‘ra, avvalo haqiqatan muhim entity’lardan boshlang.",[838,8657,8658,8664,8670,8676,8682,8704],{},[841,8659,8660,8663],{},[30,8661,8662],{},"Asosiy entity’ni aniqlang.","\nKompaniya sayti uchun bu odatda tashkilot bo‘ladi. Shaxsiy sayt uchun odam, ecommerce sahifasi uchun esa mahsulot bo‘lishi mumkin.",[841,8665,8666,8669],{},[30,8667,8668],{},"Muhim bog‘lanishlarni aniqlang.","\nTashkilotlarni xizmatlar bilan, mualliflarni maqolalar bilan, mahsulotlarni brendlar bilan, maqolalarni esa ular haqiqatan yoritayotgan mavzular bilan bog‘lang.",[841,8671,8672,8675],{},[30,8673,8674],{},"Noaniqlikni yo‘qoting.","\nNomlar, tavsiflar, URL’lar, tashkilot haqidagi ma’lumotlar va muallif identifikatsiyasini izchil saqlang.",[841,8677,8678,8681],{},[30,8679,8680],{},"Foydali mavzu arxitekturasini yarating.","\nAlohida yoritishga arziydigan mavzular uchun mustaqil sahifalar yarating va ularni mazmunli ichki linklar bilan bog‘lang.",[841,8683,8684,8687,8688,698,8691,698,8694,698,8697,1250,8700,8703],{},[30,8685,8686],{},"Mos structured data qo‘shing.","\nKontentga aniq mos keladigan holatlarda ",[84,8689,8690],{},"Organization",[84,8692,8693],{},"Person",[84,8695,8696],{},"Article",[84,8698,8699],{},"Product",[84,8701,8702],{},"ProfilePage"," kabi Schema.org turlaridan foydalaning.",[841,8705,8706,8709,8710,991],{},[30,8707,8708],{},"Implementatsiyani tekshiring.","\nGoogle qo‘llab-quvvatlaydigan markup’ni Google's Rich Results Test orqali tekshiring va kerak bo‘lsa muhim URL’larni Search Console’da ko‘rib chiqing. Google structured data’ni deploy qilishdan oldin tekshirishni va keyin Google sahifani qanday ko‘rayotganini nazorat qilishni tavsiya qiladi. (",[37,8711,1966],{"href":8712,"rel":8713},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Frecipe?utm_source=chatgpt.com",[41],[11,8715,4643],{"id":4642},[16,8717,8718,8719,8722],{},"Birinchi xato — ",[30,8720,8721],{},"entity’larni synonym deb qabul qilish",". Bog‘liq keyword’lar — so‘zlar; entity’lar esa identifikatsiya qilinadigan obyektlar yoki tushunchalardir.",[16,8724,8725,8726,8729],{},"Ikkinchi xato — ",[30,8727,8728],{},"sun’iy mavzuviy bog‘lanishlar yaratish",". Bir-biriga kuchli bog‘lanmagan o‘nlab texnologiyalarni tilga olishning o‘zi ekspertlik yoki relevance’ni isbotlamaydi.",[16,8731,8732,8733,8743,8744,991],{},"Uchinchi xato — ",[30,8734,8735,8736,8742],{},"oddiy bog‘liq linklar uchun ",[30,8737,8738],{},[30,8739,8740],{},[84,8741,8559],{}," ishlatish",". Schema.org bu property’ni oddiy “related website” property sifatida emas, identity relationship sifatida belgilaydi. (",[37,8745,8580],{"href":8578,"rel":8746},[41],[16,8748,8749,8750,8753],{},"To‘rtinchi xato — ",[30,8751,8752],{},"Schema.org markup o‘z-o‘zidan authority yaratadi deb o‘ylash",". Structured data ma’lumot uzatadi, lekin tasdiqlanmagan ma’lumotni haqiqatga aylantirmaydi.",[16,8755,8756],{},"Shuningdek, SEO vositasidagi “entity score” Google’ning rasmiy metrikasi deb o‘ylamaslik kerak. Google bunday universal Entity SEO ko‘rsatkichini ochiq ravishda hujjatlashtirmagan.",[11,8758,742],{"id":741},[16,8760,8761,8762,6402],{},"Entity SEO’ni keyword hiylasi emas, ",[30,8763,8764],{},"information architecture va entity’ni aniq identifikatsiya qilish muammosi",[16,8766,8767],{},"Avvalo entity’ni odam uchun tushunarli qiling:",[16,8769,8770],{},[30,8771,8772],{},"Bu kim yoki nima? U nima qiladi? O‘xshash nomli boshqa obyektlardan nimasi bilan farq qiladi? U nimalar bilan bog‘langan?",[16,8774,8775],{},"Keyin shu ma’lumotni mantiqiy sahifalar, ichki linklar, barqaror URL’lar, to‘g‘ri mualliflik ma’lumotlari va mos structured data orqali texnik jihatdan ham aniq qiling.",[16,8777,8778],{},"Bu qismlar bir-biriga mos kelganda, sayt o‘z mavzularini sun’iy keyword takrorlashsiz ancha ravshan ifodalaydi.",[11,8780,759],{"id":758},[761,8782,8784],{"id":8783},"entity-seo-google-ranking-factorimi","Entity SEO Google ranking factor’imi?",[16,8786,8787,8788,991],{},"Google “Entity SEO”ni alohida ranking factor sifatida hujjatlashtirmagan. Google Knowledge Graph kabi entity’ga yo‘naltirilgan texnologiyalardan foydalanadi va structured data’ni sahifadagi ma’lumotni tushunishga yordam beradigan vosita sifatida hujjatlashtiradi, ammo bu alohida Entity SEO ranking factor mavjudligini isbotlamaydi. (",[37,8789,8108],{"href":8106,"rel":8790},[41],[761,8792,8794],{"id":8793},"entity-seo-va-semantic-seo-bir-xilmi","Entity SEO va Semantic SEO bir xilmi?",[16,8796,8797],{},"Ular bir-biriga yaqin, ammo aynan bir tushuncha emas. Semantic SEO kengroq ma’noda ma’no, kontekst va search intent’ga e’tibor qaratadi. Entity SEO esa aniq identifikatsiya qilinadigan obyektlar va ular o‘rtasidagi bog‘lanishlarga ko‘proq urg‘u beradi.",[761,8799,8801],{"id":8800},"wikipedia-yoki-wikidata-kerakmi","Wikipedia yoki Wikidata kerakmi?",[16,8803,8804,8805,8807,8808,991],{},"Google’ning ochiq talablarida entity tushunilishi uchun Wikipedia yoki Wikidata sahifasi bo‘lishi shartligi aytilmagan. Schema.org Wikipedia va Wikidata’ni faqat ",[84,8806,8559],{}," orqali entity’ni bir ma’noli aniqlashi mumkin bo‘lgan sahifalarga misol sifatida keltiradi. (",[37,8809,8580],{"href":8578,"rel":8810},[41],[761,8812,8814],{"id":8813},"schemaorg-rankingni-yaxshilaydimi","Schema.org ranking’ni yaxshilaydimi?",[16,8816,8817,8818,991],{},"Google structured data’ni avvalo kontentni tushunishga yordam beradigan va ayrim Search funksiyalariga mos bo‘lish imkonini yaratadigan usul sifatida hujjatlashtiradi. Bu hujjatlar faqat schema markup qo‘shish umumiy ranking oshishiga olib keladi degan xulosani tasdiqlamaydi. (",[37,8819,1966],{"href":8435,"rel":8820},[41],[761,8822,8824],{"id":8823},"biznes-sayti-qaysi-entitylarni-aniqlashi-kerak","Biznes sayti qaysi entity’larni aniqlashi kerak?",[16,8826,8827],{},"Odatda bularga tashkilot, tegishli bo‘lsa asoschilar yoki mualliflar, xizmatlar yoki mahsulotlar, joylashuvlar va kompaniya materiallar chop etadigan muhim mavzular kiradi. Faqat haqiqatan mavjud bog‘lanishlarni ko‘rsatish kerak.",[11,8829,826],{"id":825},[16,8831,8832,8833,8836,8837,8840],{},"Entity SEO savolni ",[30,8834,8835],{},"“Bu sahifada qaysi keyword’ni takrorlash kerak?”"," dan ",[30,8838,8839],{},"“Bu sahifa qaysi entity’ni tasvirlaydi va u boshqa narsalar bilan qanday bog‘langan?”"," degan savolga o‘zgartiradi.",[16,8842,8843,8844,991],{},"Google Knowledge Graph bu farq nega muhimligini ko‘rsatadi: zamonaviy qidiruv har bir query’ni faqat alohida belgilar satri sifatida emas, balki odamlar, joylar, tashkilotlar, tushunchalar va ular o‘rtasidagi munosabatlar sifatida modellashtira oladi. (",[37,8845,8108],{"href":8106,"rel":8846},[41],[16,8848,8849],{},"Shuning uchun amaliy strategiya sodda: aniq kontent yarating, identifikatsiyadagi noaniqlikni kamaytiring, sahifalar orasida mazmunli aloqalar yarating va structured data’ni bu aloqalarni yanada aniq ko‘rsatadigan joylarda ishlating.",[11,8851,1705],{"id":1704},[838,8853,8854,8867,8880,8899,8913,8935,8954,8981],{},[841,8855,8856,8859,8860,7398,8863],{},[30,8857,8858],{},"Google — “Introducing the Knowledge Graph: things, not strings,” May 16, 2012."," Google Knowledge Graph’ni real entity’lar va ular o‘rtasidagi bog‘lanishlar modeli sifatida tushuntiradi. (",[37,8861,8108],{"href":8106,"rel":8862},[41],[37,8864,8866],{"href":8106,"rel":8865},[41],"Google Knowledge Graph announcement",[841,8868,8869,8872,8873,7398,8876],{},[30,8870,8871],{},"Google Search Central — Search Appearance documentation."," Google structured data’dan sahifa kontentini tushunish va Search funksiyalarini qo‘llab-quvvatlash uchun qanday foydalanishini hujjatlashtiradi. (",[37,8874,1966],{"href":8435,"rel":8875},[41],[37,8877,8879],{"href":8435,"rel":8878},[41],"Google Search Appearance documentation",[841,8881,8882,8885,8886,698,8888,8890,8891,7398,8894],{},[30,8883,8884],{},"Google Search Central — Organization structured data."," Tashkilotni aniqlash, disambiguation, ",[84,8887,8553],{},[84,8889,8559],{}," va bog‘liq property’larni hujjatlashtiradi. (",[37,8892,1966],{"href":8280,"rel":8893},[41],[37,8895,8898],{"href":8896,"rel":8897},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Forganization?utm_source=chatgpt.com",[41],"Organization structured data documentation",[841,8900,8901,8904,8905,7398,8909],{},[30,8902,8903],{},"Google Search Central — ProfilePage structured data."," Person yoki Organization’ni profil sahifasining main entity’si sifatida ifodalashni hujjatlashtiradi. (",[37,8906,1966],{"href":8907,"rel":8908},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fprofile-page?utm_source=chatgpt.com",[41],[37,8910,8912],{"href":8907,"rel":8911},[41],"ProfilePage structured data documentation",[841,8914,8915,8918,8919,698,8922,586,8924,8926,8927,7398,8930],{},[30,8916,8917],{},"Google Search Central — Article structured data."," Mualliflarni ",[84,8920,8921],{},"type",[84,8923,8553],{},[84,8925,8559],{}," yordamida identifikatsiya qilish bo‘yicha Google ko‘rsatmalarini o‘z ichiga oladi. (",[37,8928,1966],{"href":8604,"rel":8929},[41],[37,8931,8934],{"href":8932,"rel":8933},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Farticle?utm_source=chatgpt.com",[41],"Article structured data documentation",[841,8936,8937,8946,8947,7398,8950],{},[30,8938,8939,8940,1551],{},"Schema.org — ",[30,8941,8942],{},[30,8943,8944],{},[84,8945,8559],{}," Bu property’ni obyekt identifikatsiyasini bir ma’noli ko‘rsatadigan reference URL sifatida ta’riflaydi. (",[37,8948,8580],{"href":8578,"rel":8949},[41],[37,8951,8953],{"href":8578,"rel":8952},[41],"Schema.org sameAs definition",[841,8955,8956,5725,8959,698,8962,698,8965,698,8967,586,8970,8972,8973,7398,8977],{},[30,8957,8958],{},"Schema.org — Data Model.",[84,8960,8961],{},"mainEntity",[84,8963,8964],{},"mainEntityOfPage",[84,8966,8559],{},[84,8968,8969],{},"about",[84,8971,8553],{}," kabi bog‘lanishlarni hujjatlashtiradi. (",[37,8974,8580],{"href":8975,"rel":8976},"https:\u002F\u002Fschema.org\u002Fdocs\u002Fdatamodel.html?utm_source=chatgpt.com",[41],[37,8978,8980],{"href":8975,"rel":8979},[41],"Schema.org Data Model",[841,8982,8983,8986,8987,7398,8991],{},[30,8984,8985],{},"Google — Knowledge Graph Search API."," Entity’larni ID, nom, tur, tavsif, URL va JSON-LD\u002Fschema.org strukturalari yordamida ifodalashni hujjatlashtiradi. (",[37,8988,1966],{"href":8989,"rel":8990},"https:\u002F\u002Fdevelopers.google.com\u002Fknowledge-graph\u002Freference\u002Frest\u002Fv1?utm_source=chatgpt.com",[41],[37,8992,8994],{"href":8989,"rel":8993},[41],"Knowledge Graph Search API reference",[915,8996,8997],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":160,"searchDepth":197,"depth":197,"links":8999},[9000,9001,9002,9003,9004,9005,9006,9007,9008,9009,9010,9011,9012,9013,9014,9015],{"id":8100,"depth":197,"text":8095},{"id":24,"depth":197,"text":25},{"id":8133,"depth":197,"text":8134},{"id":8236,"depth":197,"text":8237},{"id":8289,"depth":197,"text":8290},{"id":8333,"depth":197,"text":8334},{"id":8399,"depth":197,"text":8400},{"id":8428,"depth":197,"text":8429},{"id":8591,"depth":197,"text":8592},{"id":8620,"depth":197,"text":8621},{"id":8651,"depth":197,"text":8652},{"id":4642,"depth":197,"text":4643},{"id":741,"depth":197,"text":742},{"id":758,"depth":197,"text":759},{"id":825,"depth":197,"text":826},{"id":1704,"depth":197,"text":1705},"Entity SEO nima ekanini, qidiruv tizimlari entity’lar va ular o‘rtasidagi bog‘lanishlarni qanday tushunishini hamda bunda kontent, ichki linklar va structured data qanday rol o‘ynashini bilib oling.","\u002Fentity-seo.png","Entity SEO haqida tushuncha",{},"\u002Fblog\u002Fuz\u002Fentity-seo-nima",{"title":8095,"description":9016},"blog\u002Fuz\u002Fentity-seo-nima","entity-seo","jpuDIDYkpBovkVd3S9BPY3rwv2NiviHz4PDiFt3WQBk",1789910379572]