GH GambleHub

UI öndürijiligini optimizirlemek

1) "Çalt" näme hasaplamaly

TTFB (ilkinji baýta çenli wagt) - serweriň/CDN-iň çalt jogaby.
LCP (Largest Contentful Paint) - "esasy" mazmun çalt peýda boldy.
INP (Interaction to Next Paint) - özara täsirleşende duýgurlyk.
CLS (Cumulative Layout Shift) - interfeýsiň "titremezligi".
TTI (Time to Interactive) - hemme zat eýýäm jogap berende.
Maslahat berilýän görkezmeler: LCP ≤ 2. 5 s, INP ≤ 200 ms, CLS ≤ 0. 1 (hakyky ulanyjylaryň 75-nji percentili üçin).

2) Proses: ölçemek → dar ýerleri tapmak → býudjetleri düzetmek

1. Ölçemek: RUM (hakyky ulanyjylar, ýurtlara/torlara/enjamlara ýüzlendiler) + sintetika (Lighthouse/synçylar).
2. Tapmak: Performance profilleýji (uzyn meseleler> 50 ms, layout thrashing, goşmaça renderler).
3. Düzediň: CI-de býudjetler (JS/CSS/şriftleriň, LCP/INP) we "gyzyl çyzyklar".

3) Resurslaryň ulgamy we ýüklenişi

3. 1 HTTP we ileri tutulýan ugurlar

Brotli HTTP/2/3, gysmagy açyň.
'preconnect' kritiki domenlere; 'dns-prefetch' ikinji derejeli domenler üçin.
Möhüm çeşmeler üçin 'preload' (gahryman-surat, esasy şrift).
'fetchpriority =' high/low 'we' priority 'maslahatlary nirede saklanýar.

3. 2 Kesmek

"Cache-Control: public, max-age = 31536000, immutable".
HTML - CDN arkaly gysga TTL + stale-while-revalidate.
ETag/Last-Modified we Service Worker oflayn/gaýtalanýan saparlar üçin.

4) Kod: az, soň, "deň"

4. 1 Ýygnamak

Tree-shaking, minify (в т.ч. dead-code-elim).
Marşrutlar/widjetler boýunça kode-splitting, dinamiki import.
Esasy bandlda "global" agyr paketlerden gaça duruň (moment → Intl/Day. js).

4. 2 HTML render etmek we eltip bermek

SSR/ISR/akym: çarçuwany we esasy mazmuny ilki bilen beriň.
Partial/Islands hydration: diňe interaktiw ýerleri gidrirlemek.
'<script type =' module 'defer>'.

4. 3 Reaksiýa aýratynlyklary (React ulansaňyz)

`React. lazy '+' Suspense 'ýalta widjetler üçin.
'startTransition' we 'useDeferredValue' agyr süzgüçler/gözleg üçin.
RSC (Server Components) - serwerde hasaplamalar, müşderide JS-den az.
Ştatda saýlaýjylar (zustand/redux): komponenti tutuş stor däl-de, böleklere ýazyň.

5) Render we ýagdaý: nirede "haýalladýar"

5. 1 Rerenderleri izolýasiýa etmek

Uly komponentleri bölüň, memo ('memo', 'useMemo', 'useCallback').
Sanawyň açarlary - durnukly; zerurlyksyz proplarda täze funksiýalar/obýektler döretmäň.
Köplenç üýtgeýän maglumatlar üçin "global" kontekstden gaça duruň - saýlaýjylary ýa-da waka tekerlerini ulanyň.

5. 2 Wirtualizasiýa we uly sanawlar

Sahypalar/tablisalar → wirtualization (render window).
Backpressure bilen paginasiýa/infinit-skroll (birbada 100k setirleri ýüklemäň).
Agyr widjetleriň wuportdan daşarda gijikdirilmegi.

5. 3 Layout & paint

content-visibility: auto; gizlin bölümler üçin (brauzer görünmeýänleri görkezmeýär).
kontain we 'contain-intrinsic-size' öňünden aýdyp boljak ölçegler üçin.
Gatyşmak arkaly ýygy-ýygydan okamakdan we ýazgylardan gaça duruň; ölçegleri toparlanyň.
will-change dozaly (ýogsam artykmaç ýady/gatlaklary).

6) Suratlar we grafika

Formatlar: AVIF/WebP (PNG/JPEG üçin fallback).
Responsive-çemeleşme: 'srcset' + 'sizes', retina üçin density-based.
'loading =' lazy 'gahryman däl şekiller üçin; priority/preload - diňe LCP dalaşgäri üçin.
Kesgitlenen ölçegli pleýsholderler → CLS böküşleri ýok.
Kanwas/charts: offscreen-kanwas we Web Worker; täzeden çyzmak.

7) Şriftler we tekst

Köp çyzgynyň ýerine bir ýa-da iki variable font.
'font-display: swap '/' optional', preload.
'Size-adjust' şrift çalşylanda "bökmegi" azaltmak üçin.
Şuňa meňzeş ölçegli ýerli fallback şriftleri.

8) CSS we animasiýa

Möhüm CSS onlaýn (<14-20 kB), galanlary yza süýşürilýär.
Ulanylmaýan stilleri (Purge/CSSTree) aýyryň.
Mümkin boldugyça transform/opacity animasiýalary; 'prefers-reduced-motion' -a hormat goýmak.
Çuň kaskadlardan we partlaýjy selektorlardan gaça duruň.

9) Web Workers, akym we agyr meseleler

Ähli CPU-agyr - Worker (parsing, sortlamak, agregasiýa, ML).
Uzyn jogaplar üçin akym API ('ReadableStream', 'fetch').
Duýgurlygy saklamak üçin 'requestIdleCallback '/mikrotasklar arkaly çeňňek meselelerini bölmek.

10) Ýerleşiş durnuklylygy (CLS)

LCP elementi üçin ýer goýuň (surat/widget).
Bannerleri/lentalary kesgitlenen ölçegsiz goýmaň.
Asimmetrik tultipler/tostlar - mazmuny herekete getirmäň; gatlaklardan/portallardan peýdalanmak.

11) Snippetleriň mysallary

Möhüm şrift we LCP şekili

html
<link rel="preload" href="/fonts/Inter. var. woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" as="image" href="/hero. avif" imagesrcset="/hero. avif 1x, /hero@2x. avif 2x" fetchpriority="high">

Widget-yň ýaltalyk we howpsuz başlangyjy

js const Widget = React. lazy(() => import('./Widget'));
function Section() {
const inView = useInViewport('#sec');
return <div id="sec">{inView? <React. Suspense fallback={null}><Widget/></React. Suspense>: null}</div>;
}

Ýerleşişi durnuklaşdyrmak

css
.hero {
content-visibility: auto;
contain: layout paint;
contain-intrinsic-size: 720px 320px ;/LCP reserve/
}

12) Regressiýalara gözegçilik we býujetler

Bundle-budget: umumy JS ≤ N kB, CSS ≤ M kB, initial-chunk ≤ K kB.
CI-de Web-Witals (emulirlenen) + RUM-alertler (percentillerde).
Bandlyň derňewi: PR-da source-map-explorer/analizator.
Komponentleriň çykyş-bençmarklary (element renderi 10k, reaksiýa wagty).

13) Anti-patternler

"Hemme zady birbada" ýükläň: grafikler, redaktorlar, kartoçkalar birinji ekranda.
Ullakan global state → kaskad rerenderleri.
Suratlar 'srcset/sizes' -siz, zerur ululykdan 2-4 ×.
Esasy akymda uzyn sinhron aýlawlar.
'outline: none' we optimizasiýa etmezden saýlama hileler - render görkezijilerine päsgel berýär.
'Top/left' animasiýalary.

14) Ekranyň çek-sanawy

  • LCP ≤ 2. 5 c traffikde 3G/mobaýl, CLS ≤ 0. 1, INP ≤ 200 ms
  • Möhüm çeşmeler: preload/ileri tutulýan ugurlar; galanlary - defer/lazy
  • Bandla: code-split, goşmaça garaşlylyk ýok
  • Sanawlary/tablisalary wirtuallaşdyrmak, agyr widgetlary gijikdirmek
  • Suratlar: AVIF/WebP, 'srcset/sizes', 'loading =' lazy ''
  • Şriftler: variable + 'font-display', preload diňe zerur
  • CSS: kritiki inline, Purge, 'content-visibility' we 'contain'
  • Agyr hasaplamalar üçin Workers/idle
  • Býudjetler we Web-Witals dashboard/alertlere birikdirildi

15) Durmuşa geçirmek meýilnamasy (3 iterasiýa)

Yterasiýa 1 - Çalt ýeňişler (1-2 hepde)

Brotli/HTTP-2/3, CDN. CSS we preload LCP çeşmeleri.
Agyr widjetleri dinamiki importlara çykarmak.
Suratlar → AVIF/WebP + 'srcset'. Şriftler: 'font-display: swap'.

Iterasiýa 2 - Gurluş gowulaşmalary (3-4 hepde)

Marşrutlar boýunça kode-split, bandlyň derňewi, "agyr" lipleriň aýrylmagy.
Sanlaşdyrma sanawlary, mazmun-visibility, contain-intrinsic-size.
SSR/Streaming/Adalary girizmek (degişli).
Web-Witals bilen RUM, CI-de býudjetler.

Yterasiýa 3 - Gerimi we durnuklylygy (üznüksiz)

Workers/offscreen-kanwas, batching hasaplamalar, startTransition/deferredValue.
Yzygiderli perf-audit, regressiýalaryň awtodaýjesti, topary taýýarlamak.

16) Mini-FAQ

Mobile-da iň çalt näme?
Asyl JS, SSR/akymy azaltmak we LCP şekilini optimizirlemek.

Elmydama SSR gerekmi?
Ýok. Eger sahypa dinamiki taýdan interaktiw we erbet kesilen bolsa - islands/partial hydration has gowy bolup biler.

Näme üçin "ýeňil" bandlada INP erbet?
Belki, esasy akymda uzyn meseleler (sortlar, grafikler) - Worker-a getiriň we meseleleri bölüň.

Jemi

Çalt UI - bu dersleriň toplumy: tor ileri tutulýan ugurlar we nagt pul, kiçi we giç bandllar, bökmezden öňünden aýdyp boljak render, tygşytly şekiller we şriftler, şeýle hem hakyky dünýädäki metriklere yzygiderli gözegçilik. Býudjetleri giriziň, barlaglary awtomatlaşdyryň we buýrugy her ädimde tizlik hakda pikirlenmäge öwrediň - şonuň üçin interfeýs şu gün we bir ýyldan soň çalt bolar.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.