Лазердик-жүктөө жана UX-тездетүү
1) Максаттары жана принциптери
Lazy-loading - бул маанилүү нерсени дароо көрсөтүү стратегиясы, ал эми калгандары - зарыл болгон учурда. Максаттары:- TTI/LCP кыскартуу маанилүү жол менен.
- турукташтыруу макети (төмөн CLS) алдын ала өлчөмдөрү менен.
- Мобилдеги батареяны жана трафикти сактоо.
- Конверсияны көтөрүү: колдонуучу аракетти эртерээк көрөт.
Принциптер: приоритет → прогресс → алдын ала айтуу. Адегенде критикалык мазмун, андан кийин прогрессивдүү мазмун жана жакшыртууларды жүктөө.
2) Rendering критикалык жолу
Критикалык HTML: "above-the-fold" белгилерин дароо бериңиз.
Критикалык CSS: онлайн ≤ 10-15 KB; калганы - 'media = "print"' + swap/кошумча жүктөө.
JS блокатор катары: 'defer '/' async', чанктарга бөлүү, жолдор боюнча логиканы жүктөө.
Шрифттер: 'font-display: swap' optional ', WOFF2 жүктөө, системалык fallback'.
3) Тармактык ресурстарды артыкчылыктуу
CDN/тамгалар/сүрөттөр үчүн Preconnect (TCP + TLS алдын ала).
үчүнчү домендер үчүн DNS-prefetch.
Preload сын сүрөттөр/арип/скрипт.
Priority Hints (' importance =" high' low",' fetchpriority =" high"' hero-сүрөт үчүн).
HTTP/3/QUIC: аз жашыруун; CDN-edge колдонуучуга жакын.
Кэш саясаты: 'immutable' үчүн версияланган assets; туура ETag/Last-Modified.
4) Progressive Rendering жана жүктөө абалы
Skeletons/Спиннерлердин ордуна Шиммерлер: "секирүү" жок визуалдык прогресс.
Белгиленген өлчөмдөгү Placeholders (карталар, миниатюралар) - нөл CLS.
Streaming/Chunked HTML: тез кадр берүү, андан кийин мазмун толуктоо.
Optimistic UI (кылдаттык менен): кийинки validation менен заматта аракет.
5) медиа мазмунун Лазы-жүктөө
Сүрөттөр:' loading =" lazy"',' decoding =" async"', AVIF/WebP форматтары (JPEG/PNG фоллбеги).
Responsive: 'srcset '/' sizes' ар кандай DPR/туурасы астында; 1 × жетиштүү жерде 3 × жүктөп жок.
Болжолдуу бийиктиги: 'width/height' же CSS 'aspect-ratio'.
Video: 'preload =' metadata '', постерлерди жүктөө, viewport сыртында автопауза.
иконалар: sprite/inline SVG; ашыкча HTTP суроо алыс.
6) Жалкоо компоненттери жана жолдору
Code-splitting: жолдор/виджеттер боюнча динамикалык импорт.
Арал компоненттери/жарым-жартылай гидрация: интерактивдүү аймактарды гана жандандырыңыз.
SSR/SSG + ISR: Server боюнча HTML otrenderirovat, инкременталдык жарыктандыруу.
Suspense/Defer (колдонулган алкакта): маалыматтардын декомпозициясы жана UI.
7) Чоң тизмелер жана таблицалар
Virtualization (windowing): рендер гана көрүнгөн аймак + буфер.
Анкер кошумча жүктөө: пакеттерди жүктөөдө позицияны сактап калуу.
Batch-Updates: scroll боюнча кайра минималдаштыруу.
Fixed-row height же 'contain-intrinsic-size' алдын ала өлчөмдөрү үчүн.
8) CSS жана браузер ылдамдаткычтар
'content-visibility: auto': браузер көзгө көрүнбөгөндү өткөрүп жиберет (минималдуу эсептөөлөр).
'contain '/' will-change': стилдердин/макеттердин таасир чөйрөсүн чектөө.
Animation: гана transform/opacity; layout/paint-оор таасирлерин болтурбоо.
Shadow жана blur - экономикалык, өзгөчө тизмелеринде.
9) Event башкаруу жана JS-жүктөө
Пассивдүү скролл/тача угуучулары ('{passive: true}').
Debounce/throttle боюнча resize/scroll/иштеп чыгуучулар.
Viewport (IntersectionObserver) сыртындагы виджеттерди кийинкиге калтыруу.
Web Workers оор эсептөө өткөрүп берүү.
10) Мобилдик контекст
Тармак: жай 3G/жогорку RTT - агрессивдүү жалкоо жүктөө.
Батарея жана жылуулук: таймер жыштыгын чектөө, FPS арткы жандандыруу азайтуу.
Кысуу: Текст үчүн Brotli, туура 'Accept-Encoding'.
Wi-Fi боюнча Prefetch гана мүмкүн өтүү үчүн (чыкылдатуу тарыхы).
11) Жеткиликтүүлүк жана SEO
Скелет ≠ мазмун: экран окурмандарга тоскоол болбойт; логикалык фокус тартиби.
Server HTML ачкыч текст - JS артында баарын жашырып жок.
Alt тексттер жана аталыштар жүктөө чейин жеткиликтүү бойдон калууда.
Lazy мазмуну баскычтоп жолдорун бөгөттөп жок болушу керек.
12) Метрика жана максаттуу маанилери
LCP (hero-сүрөт/баш): ≤ 2,5 с (Мобайл).
INP (киргизүү жооп): ≤ 200 ms.
CLS: ≤ 0,1.
TTFB: ≤ 500ms; TTI: ≤ 3 б.
Bytes over the wire (биринчи көрүү): катуу бюджет (мисалы, ≤ 200-300 KB крит. ресурстар).
Scroll-jank: <1% кадр> 16,7 ms.
- 'lazy _ enqueued '/' lazy _ loaded' (id, көрүнүшү, өлчөмү, latency),
- 'component _ hydrated' (убакыт, JS салмагы),
- `virtualized_window_resize`,
- `lcp_candidate_shown`, `skeleton_time_visible`,
- каталар ('img _ error', 'decode _ timeout').
13) типтүү зоналар үчүн үлгүлөр
үй/каталог: SSR + skeleton карта, Лазы сүрөттөр, прогрессивдүү чыпкалар.
Продукт/оюн картасы: preload + жогорку артыкчылыктуу баатыр сүрөт; галерея - lazy; сын-пикирлер - чыкылдатуу менен.
Long макалалар/wiki: TOC, окуу прогресс, медиа/код блоктору үчүн lazy, кийинкиге калтырылган камтуулар.
Live-тасмалар: саптарды виртуалдаштыруу, "авто-скролл тыныгуу", буфер чеги.
14) Антипаттерндер
Spinner бүт экран> 1-2 эч кандай прогресс менен.
Lazy орун ээлери жок → секирүү макети (CLS ↑).
Сейрек кездешүүчү сценарийлер үчүн "бир эле учурда бардык JS" жүктөп алуу.
Оор ариптерди/сүрөттөрдү критикалык бөлүккө киргизүү.
Карталардын күтүлбөгөн өлчөмдөрү → "тентип" мазмуну.
Сынчыл жүктөө (логотип, hero-текст) - LCP сындырат.
"Артка" кийин ордун кайтаруунун жоктугу.
15) Киргизүү чек-тизмеси (кадам сайын)
Спринт 1 - Диагностика: LCP/INP/CLS/TTFB өлчөө; ресурстардын жана маанилүү жолдун картасын түзүңүз.
Спринт 2 - Сын/артыкчылык: критикалык CSS/HTML, 'preconnect '/' preload', JS чанктарын азайтыңыз.
Спринт 3 - Медиа: AVIF/WebP, 'srcset/sizes', белгиленген өлчөмдөрү, non-hero үчүн зарыл.
Спринт 4 - Тизмелер: виртуалдаштыруу, анкердик жүктөө, скелетондор/shimmer.
Спринт 5 - Архитектура: жарым-жартылай гидрация/аралдар, ССР/SSG/ISR, агым.
Sprint 6 - Slim орнотуу: 'content-visibility', priority hints, debounce, Web Workers.
Спринт 7 - A/B жана телеметрия: скелеттердин параметрлерин, lazy деңгээлдерин, бюджеттерди салыштырыңыз.
Спринт 8 - релиздер гигиенасы: assets нускасы, кэш-бастинг, rollback стратегиясы.
16) Глоссарий (кыскача)
Lazy-loading - көрүнбөгөн мазмунду кийинкиге калтыруу.
LCP/INP/CLS/TTFB/TTI/TBT - UX ылдамдыгынын негизги көрсөткүчтөрү.
Code-splitting/Гидрация/Аралдар - майдалоо жана жандандыруу UI ыкмалары.
Виртуалдаштыруу - тизменин көрүнгөн терезесинин рендери.
Priority Hints/Preconnect/Preload - мурда жүктөп браузер көрсөтмөлөр.
Content-visibility - көзгө көрүнбөгөн мазмун үчүн эсептөө өтүү.
17) Жыйынтык
Lazy-loading - бул "жүктөө =" lazy" жана даяр" эмес. Бул система: критикалык жол, туура медиа форматтары, аралдын интерактивдүүлүгү, виртуалдаштыруу жана телеметрия. Маанилүү нерсени заматта, экинчисин - көрүнбөгөн жана арзан, ал эми макетти алдын ала айтууга болот. Андан кийин продукт ар кандай түзмөктө жана ар кандай тармакта тез сезилет.