Skip to content

Producție: vizibilitatea meniului într-o cerere și imaginea principală găsită din antet

Vitalie requested to merge prod-lcp-nav into main

Aduce în producție cele două lucrări verificate deja pe dev — !25 (merged) (#20 (closed)) și !26 (merged) (#21 (closed)). Arborele e identic cu develop.

Ce intră

#20 (closed) — vizibilitatea meniului într-o singură cerere. GET /api/nav-visibility întoarce dintr-o dată colecțiile și produsele publicate, fără limbă; în frontend, o hartă de promisiuni la nivel de modul face ca o componentă montată mai târziu să se atașeze la cererea deja pornită.

#21 (closed) — imaginea principală, găsită fără să se aștepte JavaScript-ul. Randarea scrie <link rel="preload" as="image"> pentru primul banner (un decupaj per prag), preconnect către domeniul API se injectează la pornirea containerului din API_URL, fetchpriority="high" pe imaginea din hero, iar /uploads trimite max-age=31536000, immutable.

Măsurat pe dev, după deploy, Lighthouse 13.4.1 mobil

Pagină LCP înainte LCP după Cereri API înainte după
Prima pagină 8,6 s 5,7 s 64 (21 unice) 11, zero repetate
/collections/shop-all 3,5 s 3,0 s 52 (14 unice)
/products/hypervolt-3-pro 6,2 s 4,5 s 78 (16 unice) 6, zero repetate

Cererea imaginii principale pornește acum la 344 ms în loc de 1.265 ms, iar lista de verificare a LCP-ului din Lighthouse e verde pe toate trei punctele (prioritate, descoperibilă în document, fără încărcare leneșă).

Ce NU rezolvă

Pragul de 2,5 s tot nu e atins. Descărcarea imaginii nu mai e blocajul — se termină la 597 ms — dar elementul e desenat de React, deci LCP-ul depinde acum de cât durează până pachetul de intrare se încarcă, rulează și cere bannerul. Continuarea e în #34 (closed) (pachetul duce toate trei limbile) și în livrarea bannerului odată cu HTML-ul.

Verificare

  • backend: npm run build, npm test — 452 de teste trec
  • frontend: npm run lint, npm run build, npm test — 196 de teste trec
  • Pe dev, după deploy: preconnect și cele două preload-uri prezente în HTML, /uploads răspunde cu max-age=31536000, immutable prin Cloudflare, /api/nav-visibility cu max-age=60, pagina de start se randează cu meniul întreg

Closes #20 (closed)

Merge request reports