Skip to content

Vizibilitatea meniului într-o singură cerere

Vitalie requested to merge 20_nav-visibility into develop

Antetul și subsolul întrebau, fiecare pe cont propriu, care intrări de meniu sunt publicate — o cerere per intrare, și încă o rundă după ce se așeza limba. Pe pagina de produs: 78 de cereri către API, majoritatea copii ale unei adrese deja pornite, toate pe aceleași conexiuni pe care le folosește și imaginea principală.

Ce s-a schimbat

GET /api/nav-visibility întoarce dintr-o dată toate slug-urile de colecții publicate și toate handle-urile de produse publicate. Nu primește limbă: published e un singur câmp pe rând, identic în toate cele trei limbi, deci o schimbare de limbă nu mai are ce să reîntrebe — de aici dispar și rundele repetate.

În frontend, o hartă de promisiuni la nivel de modul (frontend/src/lib/catalog.ts): o componentă care se montează mai târziu se atașează la cererea deja pornită, în loc să înceapă alta. Asta rezolvă și citirile duble de /api/products și /api/shop-categories.

Antetul răspunsului e Cache-Control: public, max-age=60 — răspunsul e identic pentru toți vizitatorii.

Măsurat pe build de producție, încărcare completă

Pagină Înainte Acum
/products/hypervolt-3-pro 78 de cereri, 16 unice 6 cereri, 0 repetate
/ 64 de cereri, 21 unice 11 cereri, 0 repetate

Abatere de la issue

Criteriul cerea cel mult 10 cereri pe pagina de start; sunt 11. Cele trei rămase peste prag sunt content-list-uri cerute de trei secțiuni diferite ale paginii, cu chei diferite — nu sunt repetări, ci cereri distincte. Unirea lor cere coordonare între componente și nu ține de meniu.

Verificare

  • backend: npm run build, npm test — 452 de teste trec, inclusiv patru noi în tests/nav-visibility.test.ts
  • frontend: npm run lint, npm run build, npm test — 196 de teste trec
  • Filtrarea verificată în browser: cu o colecție trecută pe nepublicat, intrarea ei dispare din antet și din subsol; republicată, revine

Closes #20 (closed)

Merge request reports