GH GambleHub

Oʻzaro taʼsir tezligi va latency UI

1) Interfeys tezligi nima

Tezlik faqat sahifani yuklash emas. Bu to’rtta kechikish summasi:

1. Input latency - imo-ishoradan hodisa protsessorigacha.

2. Network latency - orqa/kesh javobigacha.

3. Render latency - asosiy oqimda ishlash (JS/CSS/layout/paint).

4. Animation latency - kadrlarning silliqligi va barqarorligi.

Maqsad: foydalanuvchi harakat boshlanganini va jarayon qayerga ketayotganini bir zumda ko’radi; haqiqiy natija oldindan aytib bo’lmaydi.

2) Insonni idrok etish chegaralari

≤ 50 ms - «chaqmoq tezligida» (bosma aks-sado, tugmani bosish).
≤ 100 ms - «bir zumda» (klik → vizual javob).
≤ 200 ms - ko’pchilik UI reaksiyalar uchun yo’l qo’yiladi.
≤ 1000 ms - aniq progress/skeletonda chidash mumkin.

💡 10 s - foydalanuvchi kontekstini yo’qotadi, eskalatsiya kerak (seyv, kechiktirish, notifikatsiya).

3) RAIL-model va maqsadli budjetlar

R (Response): kirish uchun javob

Klik/tap → vizual javob ≤ 100 ms.
Fokus/hover → ≤ 80-120 ms.

A (Animation): silliq

60 FPS ⇒ 16 kadr. 7 ms; og’ir operatsiyalarni kadrdan chiqarish.
Faqat’transform ’/’ opacity’ni jonlantiring.

I (Idle): orqa fon vazifalari

50 ms ≤ slotlarga bo’lamiz, idle-derazalardan foydalanamiz.

L (Load): yuklash

TTFB ≤ 200 ms, LCP ≤ 2. 5 s, INP ≤ 200 ms, CLS ≤ 0. 1.

4) KPI va tezlik alertlari

INP (Interaction to Next Paint): p75 <200 ms (yaxshi), 200-500 (yaxshilash kerak).
Long Tasks (> 50 ms): LT bilan kadrlar ulushi <5%.
TTFB p75 <200 ms (kesh/Edge), LCP p75 <2. 5 q.
First User Feedback (FUF): birinchi vizual tasdiqlash uchun vaqt ≤ 100 ms.
Shakl uchun Time-to-Usable: ≤ 1 s birinchi maydonni kiritishdan oldin.

5) bir zumda javob beradigan UX-patternlar

1. Optimistik yangilanishlar: biz UIni darhol o’zgartiramiz (balans/stavka/layk), xato bo’lganda konkida uchamiz.
2. Agar tuzilishi ma’lum bo’lsa, spinner o’rniga skeletonlar.
3. Progress/bosqichlar: determinirlangan progress bar, agar jarayonning uzunligi ma’lum bo’lsa.
4. Lokal maslahatlar: tezkor tostlar/« Jo’natamiz »steyti... ≤ 100 ms.
5. Oldindan yuklash: hover/koʻrinish →’prefetch ’/’ preload’.

6) Kechikishlarni kamaytirishning texnik usullari

6. 1 Input → Render

Mobil telefonda ms delay 300 olib tashlang:’<meta name = «viewport» content = «width = device-width, initial-scale = 1»>.
’addEventListener (’ touchstart’, handler, {passive: true})’.
Tasdiqlashni tezda chizish uchun «requestAnimationFrame» yoki «mikro topshiriqqa» bosish.
Layout-thrash: oʻqish/yozishdan qoching layout - batchit.

6. 2 JS va asosiy oqim

Bandlalarni ajrating (code-splitting), yo’nalishlar bo’yicha yuklang.
Og’ir hisoblash → Web Worker.
’scheduler’ dan foydalaning. postTask ’/’ requestIdleCallback’orqa fon vazifalari uchun.
Tanqidiy CSS - inline; JS с `defer`/`async`.
Roʻyxatlarni virtual qilish,’content-visibility: auto’,’contain: content’.

6. 3 Render va animatsiyalar

’transform/opacity’ ni jonlantiring; ’height/left/box-shadow’ ni yuzlab elementlarda jonlantirmang.
’will-change’ ni vaqtincha animatsiya oldiga qoʻyish; keyin tozalash.
Ulkan PNG oʻrniga spraytlar/vektor; heavy blur dan qoching.

6. 4 Tarmoq va kesh

Edge-кеш (CDN), `cache-control`, `stale-while-revalidate`.
Kritik domenlarga Preconnect; Early Hints (103), HTTP/2/3.
Niyat boʻyicha prefetch (hover/viewport).
Streaming/SSR + progressiv gidratsiya/orollar.

7) Debauns/trottling va navbatlar

Debauns - kirish vaqtida qidirish uchun (150-300 ms).
Trottling - skroll/resize uchun (100-200 ms).
Tez-tez sodir bo’ladigan yangilanishlar uchun navbatlar/batching (live-ma’lumotlar).

js const debounce = (fn, ms=200)=>{let t; return (...a)=>{clearTimeout(t); t=setTimeout(()=>fn(...a),ms)}}
const throttle = (fn, ms=120)=>{let t=0; return (...a)=>{const n=Date. now(); if(n-t>ms){t=n; fn(...a)}}}

8) Yuklash va qayta aloqa patternlari

Skeleton → Content (siljishlarsiz, belgilangan balandliklar).
Shimmer 1200-1600 ms, amplituda ≤ 20%.
Optimistik kartochka: kulrang prevyu + matn - ma’lumotlar kelganda almashtiramiz.
Xato: qisqa retry banner, idempotency-takrorlash kalitlari.

9) Tezkor javob berish uchun tarmoq strategiyalari

Tanqidiy harakatlar (stavka/to’lov):
  • UI tasdig’i darhol (optimistik), backend - idempotent;
  • taymaut (3-5 s) da «oldik, ishlayapmiz» maqomini ko’rsatish + fon retralari;
  • Statuslar uchun WebSocket/SSE, backoff 1-2-4-8 s.

Pre-ma’lumotlar: jadval bo’yicha warm-up kesh, mashhur yo’nalishlar prefetch.

Edge funksiyalari: validatsiyalar/agregatsiyalar foydalanuvchiga yaqinroq.

10) Kod-snippet tezkor UI

Tugmaga tezda javob berish (tarmoq javobidan oldin feedback):
js btn. addEventListener('click', () => {
btn. classList. add ('is-busy') ;//requestAnimationFrame instant visual response (async () => {
try {
const res = await fetch('/api/action', { method: 'POST', body: payload });
if (!res.ok) throw new Error('fail');
btn. classList. add('is-done');
} catch {
btn. classList. remove('is-busy'); btn. classList. add('is-error');
}
});
});
Niyat boʻyicha prefetch (hover/viewport):
js const prefetch = url => fetch(url, { credentials:'include', priority:'low' }). catch(()=>{});
document. querySelectorAll('a[data-prefetch]'). forEach(a=>{
a. addEventListener('mouseenter', () => prefetch(a. href), { once:true });
const io=new IntersectionObserver(e=>{ if(e[0].isIntersecting){prefetch(a. href); io. disconnect();} });
io. observe(a);
});
«Arzon» animatsiyalar va skeleton uchun CSS:
css
.btn. is-busy { pointer-events:none; }
.skeleton { position:relative; background: var(--bg-elevated); overflow:hidden; }
.skeleton::after {
content:""; position:absolute; inset:0;
background: linear-gradient(90deg, transparent, rgba(255,255,255,.12), transparent);
animation: shimmer 1. 4s infinite;
}
@keyframes shimmer { from { transform: translateX(-100%);} to { transform: translateX(100%);} }

11) Diagnostika va monitoring

Maydon: RUM (dala metrikasi) p75 mamlakatlar/tarmoqlar/qurilmalar boʻyicha.
’input → handler → network → paint’.
«Qizil zonalar» belgisi: Long Task markerlari, blocking-time, Slow-route list.
INP/LCP/TTFB degradatsiyasiga alertlar.
Ssenariy testlari: «klik → DOM o’zgartirish» etalon vaqtini yozish.

12) iGaming xususiyatlari

Stavka/xarid:
  • UI: tugma holatini tezda qayd etish (pressed → busy), dubl - tost «Qabul qilindi».
  • Bekend: idempotent stavka bo’yicha kalit; maqomi - WebSocket orqali; taymaut → shaffof «pending».
  • UI-budjet: FUF ≤ 100 ms, yakuniy tasdiqlash ≤ 1 s (agar uzoqroq bo’lsa - taymer/sababni ko’rsatamiz).
Spin/Reveal:
  • Tezlashtirish ≤ 200 ms, bir tekis aylanish, 300-500 ms; cheksiz tsikllarsiz.
  • Yutuq tugmalari - strubasiz, matn/summa o’qish mumkin (AAA).
Hayot koeffitsiyentlari:
  • Delta patchi 250-1000 ms da bir marta, batching;
  • layout sakrashsiz vizual diff (strelka/rang/qalinlik);
  • hover/focus yangilanishlariga qarshi.
Turnirlar/reytinglar:
  • hisobvaraq inkrement batchami 40-60 ms, jadval raqamlari;
  • sticky-shapka, satrlarni virtuallashtirish.

13) Anti-patternlar

Bosish (tarmoqni kutish) ga bir zumda javob berilmaydi.
Yuzlab elementlardagi’filter/box-shadow’ogʻir animatsiyalari.
Bitta ulkan JS bandl> 1-2 MB tanqidiy yo’l.
«Spinner bo’shliqda» 1-2 s dan ortiq progress/skeletsiz.
Bitta tikda layout oʻqish/yozish (layout thrashing).
Hover-only mobil aloqa funksiyalari.

14) Tezlik tokenlari (dizayn-tizim)

json
{
"latencyBudget": {
"tapFeedbackMs": 100,
"keyEchoMs": 50,
"hoverMs": 120,
"pressMs": 90,
"modalInMs": 240,
"toastInMs": 200
},
"webVitalsTargets": { "INP": 200, "LCP": 2500, "CLS": 0. 1, "TTFB": 200 },
"animation": {
"easing": { "std": "cubic-bezier(0. 2,0,0. 2,1)", "acc": "cubic-bezier(0. 4,0,1,1)" },
"duration": { "hover": 160, "active": 90, "overlay": 240 }
}
}

15) Tezlik QA-chek-varag’i

Javob

  • Klik/tap → vizual javob ≤ 100 ms; kirish → aks-sado ≤ 50 ms.
  • Mobil telefonda 300 ms kechikish yo’q.
  • INP p75 ≤ 200 ms; Long Tasks ulushi ≤ 5%.

Yuklash

  • TTFB ≤ 200 ms; LCP ≤ 2. 5 s; CLS ≤ 0. 1.
  • «Osilgan» spinnerlar o’rniga skeletonlar/taraqqiyot.

Render

  • Faqat animatsiyalarda’transform/opacity’; massivlarda «og’ir» soyalar yo’q.
  • Uzun roʻyxatlar uchun content-visibility/virtualizatsiya.

Tarmoq

  • Edge-kesh, preconnect, niyat boʻyicha prefetch.
  • Tanqidiy harakatlar uchun idempotentlik va retraj.

A11y

  • ’prefers-reduced-motion’qoʻllab-quvvatlandi.
  • Hover-kontent fokus/klaviatura orqali mavjud.

16) Dizayn-tizim uchun hujjatlar

«Latency Budgets»: ostonalar jadvali (tap, hover, modal, toast, shakl).
«Instant Feedback»: optimistik harakatlar patterni + orqaga qaytish.
«Prefetch by Intent»: gidlar va yordamchilar.
«Performance Playbook»: profillash chek-varaqlari va RUM-alertlar.
«Do/Don’t»: raqamlar bilan tezkor/sekin ssenariylar misollari.

Qisqacha xulosa

O’zaro ta’sir tezligi - bu tezkor javob + natijani oldindan aytib bo’ladigan yetkazib berish. first-feedback uchun muqaddas byudjet sifatida 100 ms saqlang, tarmoqni optimallashtiring (Edge/kesh/prefetch), asosiy oqimni tushiring, faqat arzon xususiyatlarni jonlantiring va optimistik namunalarni qo’llang. O’shanda interfeys jonli, tushunarli va barqaror tuyuladi - ayniqsa iGaming ssenariylarida yuqori stavkalar va real vaqt.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.