Cum am redus timpul de încărcare al unui site la sub o secundă
Viteza nu este doar o metrică de orgoliu — ea influențează poziționarea în căutări și veniturile. Iată activitatea exactă de performanță pe care o rulăm pentru fiecare build, în ordinea care contează cel mai mult.
Majoritatea site-urilor web lente nu sunt lente din motive misterioase. Sunt lente din cauza câtorva probleme previzibile acumulate una peste alta — și se rezolvă într-o ordine previzibilă. Când un client vine la noi cu un timp de încărcare de trei secunde, rareori avem nevoie de trucuri exotice. Avem nevoie de disciplină.
Acesta este același checklist pe care îl rulăm pentru fiecare proiect de performanță, aproximativ în ordinea priorităților. Fiecare pas este ieftin în raport cu impactul său, iar majoritatea site-urilor par dramatic mai rapide după primii trei pași.
Măsoară înainte de a modifica ceva
Nu poți îmbunătăți ceea ce nu măsori și cu siguranță nu poți dovedi o îmbunătățire fără un baseline. Începem fiecare proiect cu date din teren (field data), nu doar cu scoruri de laborator.
- Laborator — Lighthouse și WebPageTest pentru o analiză controlată și repetabilă.
- Teren (Field) — metrici ale utilizatorilor reali (CrUX / RUM) pentru ceea ce experimentează oamenii cu adevărat.
- Buget — o limită maximă strictă pe rută, astfel încât regresele să fie depistate în CI, nu în producție.
Un scor de laborator de 100 nu înseamnă nimic dacă utilizatorii tăi reali folosesc telefoane mid-range și rețele instabile. Optimizează pentru teren (field).
Elimină resursele care blochează redarea (render-blocking)
Cea mai mare victorie pe majoritatea site-urilor este eliminarea CSS și JavaScript din calea critică (critical path). Browserul nu poate reda (paint) până nu termină de analizat resursele care blochează redarea — deci cu cât sunt mai puține, cu atât mai repede apare ceva pe ecran.
// amână tot ce nu este critic
const load = () => import('./analytics.js');
if ('requestIdleCallback' in window)
requestIdleCallback(load);
else setTimeout(load, 2000);
Include inline cantitatea mică de CSS necesară pentru primul viewport, apoi încarcă restul asincron. Amână (defer) scripturile non-critice. Scopul este o primă redare (first paint) care nu așteaptă după nimic de care nu are absolută nevoie.
Tratează imaginile ca pe un buget
Imaginile sunt de obicei cele mai grele elemente de pe o pagină și cel mai ușor de greșit. Trei reguli acoperă nouăzeci la sută dintre cazuri:
- Servește formate moderne — AVIF sau WebP — cu o alternativă (fallback).
- Redimensionază imaginile la dimensiunile lor redate; nu livra niciodată o imagine hero de 3000px într-un slot de 600px.
- Încarcă leneș (lazy-load) tot ce se află sub pliul paginii (below the fold) și rezervă spațiu pentru a evita deplasarea aspectului (layout shift).
Stochează în cache la nivel de edge
Odată ce pagina este optimizată, următoarea întrebare este cât de repede ajung octeții la utilizator. Un CDN cu headere de cache rezonabile transformă o interogare de 600ms la serverul de origine într-o accesare de 30ms la nivel de edge. Pentru conținutul dinamic, stale-while-revalidate îți oferă răspunsuri instantanee în timp ce reîmprospătează datele în fundal.
Performanța este o funcționalitate. O includem în buget la fel ca pe oricare altă parte a build-ului.
Rezultatul
În cadrul proiectului care a generat acest articol, pagina principală a trecut de la un largest contentful paint de 3,1s la 0,9s, iar conversiile organice au crescut considerabil în cursul aceleiași luni. Nimic nu a fost magie — doar checklist-ul de mai sus, aplicat în ordine.
Dacă site-ul tău se mișcă greu și nu ești sigur de unde să începi, contactează-ne — un audit scurt scoate de obicei la iveală cele două sau trei modificări care contează cel mai mult.