Imagini, fonturi, JS: quick wins de viteză (aplicabile azi)
Vrei o accelerare site vizibilă fără să refaci tot? Începe cu trei zone care cântăresc cel mai mult: optimizare imagini și fonturi și încărcare asincronă JS.
defer
/async
. Rezultatul: pagină care se vede și se mișcă mai repede pe telefon.
1) Imagini: cele mai rapide câștiguri
Reguli simple
- Dimensiune corectă: nu încărca poze uriașe pentru un card mic.
- Format modern: folosește WebP/AVIF, păstrând un fallback JPG/PNG.
- Încărcare întârziată: imaginile de mai jos în pagină cu
loading="lazy"
. - Descrieri scurte: text alternativ care spune „ce se vede”.
Dacă ai multe imagini vechi, procesăm în lot cu compresie sigură.
Exemplu simplu (picture)
<picture>
<source srcset="/img/hero.avif" type="image/avif">
<source srcset="/img/hero.webp" type="image/webp">
<img src="/img/hero.jpg"
alt="Ecran de site rapid pe telefon"
width="1200" height="700"
loading="lazy" decoding="async" />
</picture>
Dimensiunile declarate ajută la stabilitate (nu „saltă” layout-ul).
Galerii & listări
- folosește
srcset
+sizes
pentru imagini responsive - nu încărca 10 imagini deodată: afișează primele, restul la scroll
- evită caruselul greu dacă nu e necesar
Exemplu responsive
<img
src="/img/card-800.webp"
srcset="/img/card-400.webp 400w, /img/card-800.webp 800w, /img/card-1200.webp 1200w"
sizes="(max-width: 680px) 100vw, 400px"
alt="Exemplu card"
loading="lazy" decoding="async" />
2) Fonturi: frumos și rapid
Ce funcționează
- font-display: swap — textul apare imediat cu un font de rezervă, apoi se schimbă fin.
- mai puține variante — regular + bold sunt adesea suficiente.
- self-host — găzduiește fontul pe același domeniu, unde e posibil.
- preload pentru fontul esențial (un singur fișier, varianta de bază).
Exemple rapide
<link rel="preload" href="/fonts/brand-regular.woff2"
as="font" type="font/woff2" crossorigin>
@font-face{
font-family:"Brand";
src:url("/fonts/brand-regular.woff2") format("woff2");
font-display:swap; /* textul apare imediat */
font-weight:400; font-style:normal;
}
Evita fonturile externe „grele” dacă nu sunt necesare.
Alegerea fontului
- folosește system UI când e cazul (zero fișiere de font)
- limitează variantele (regular/bold/italic doar dacă e nevoie)
- evită icon-font-urile mari — folosește SVG-uri punctuale
Semn că e bine
- textul nu „clipește” gol
- pagina rămâne lizibilă chiar fără fontul personalizat
- nu încarci 5-10 fișiere de font pentru o singură pagină
3) JavaScript: încarcă doar ce trebuie
Mută scripturile în spate
Scripturile grele pot bloca afișarea paginii. Soluția: marchează-le pentru încărcare întârziată și ține doar ce e necesar.
defer
— așteaptă, dar păstrează ordinea; se execută după ce pagina este gata.async
— se încarcă în paralel și rulează când e gata (atenție la dependențe).- elimină plugin-urile nefolosite; înlocuiește librării masive cu variante mici.
Exemplu: <script> corect
<!-- librărie necesară peste tot -->
<script src="/js/app.min.js" defer></script>
<!-- widget de pe pagini secundare -->
<script src="/js/widget.js" async></script>
Dacă ai un singur fișier uriaș, împarte-l: „critic” vs. „opțional”.
Cum reduci „greutatea”
- dezactivează carusele/efecte pe mobil dacă nu sunt esențiale
- folosește CSS pentru animații simple (mai ieftin decât JS)
- încarcă scripturi terțe doar acolo unde chiar ai nevoie
Semne că ai reușit
- prima parte a paginii apare rapid
- derularea este fluidă
- evenimentele (click, deschidere meniu) răspund repede
4) Checklist „5 minute” (începi astăzi)
Imagini
- comprimă 3–5 imagini mari de pe homepage
- pune
loading="lazy"
pe imaginile din josul paginii - adaugă lățime/înălțime pe imaginea din hero
Fonturi
- activează
font-display: swap
- dezactivează greutăți pe care nu le folosești
- preîncarcă un singur font esențial
JavaScript
- adaugă
defer
pe scriptul principal - oprește un plugin pe care nu-l folosești
- mută widgeturile „opționale” pe
async
5) Impact vs. efort (unde merită să începi)
Acțiune | Efort | Impact | Observații |
---|---|---|---|
Comprimă imaginile mari | Mic | Mare | începe cu homepage și pagini de campanie |
Setează font-display: swap | Mic | Mediu | textul devine lizibil imediat |
defer pe scriptul principal | Mic | Mare | prima parte a paginii apare mai repede |
Reduci greutățile de font nefolosite | Mediu | Mediu | taie 100–300 KB uneori |
Împarți bundle-ul JS „monolit” | Mediu | Mare | critice vs. opționale |
Întrebări frecvente
WebP sau AVIF?
Ambele sunt bune. AVIF comprimă și mai bine, dar nu peste tot. Folosește <picture>
cu surse multiple și un JPG de rezervă.
Ce înseamnă „swap” la fonturi?
Textul apare imediat cu un font de sistem (provizoriu), apoi se schimbă fin în fontul dorit când fișierul se încarcă.
Când folosesc async
și când defer
?
defer
păstrează ordinea scripturilor și rulează după ce pagina e gata — sigur pentru scriptul principal. async
e bun pentru widgeturi independente (chat, hartă) care pot rula oricând.
Contează și CSS-ul?
Da, dar în acest ghid am vizat cele mai mari câștiguri: imagini, fonturi, JS. Pentru o imagine de ansamblu, fă un audit tehnic SEO.