Încărcarea întârziată a JavaScript-ului este o metodă de reducere a Timpului Total de Blocare (TBT) prin amânarea fișierelor JavaScript care împiedică browserul să afișeze conținutul paginii, astfel încât acestea să fie încărcate într-o ordine corectă. Pe scurt, adăugând defer sau async la scripturile care nu sunt critice, permiteți firului principal de execuție să fie blocat mai puțin; astfel, utilizatorul va putea vedea pagina mai repede, va putea da clic mai devreme și metricele Core Web Vitals se vor îmbunătăți. Pentru a aplica încărcarea întârziată a JavaScript-ului pe site-ul dumneavoastră, trebuie mai întâi să determinați care fișiere sunt critice, să utilizați în general defer pentru scripturile cu dependențe și async pentru scripturile externe independente, și după modificare, trebuie să măsurați valoarea TBT folosind PageSpeed Insights, Lighthouse și Chrome DevTools.
Problemele de performanță pe site-urile web moderne provin adesea nu din imagini, ci din utilizarea necontrolată a JavaScript-ului. Pe un site de comerț electronic, dacă filtrele de produse, suportul live, pixelii publicitari, codurile de analiză, pluginurile de comentarii, instrumentele de testare A/B și scripturile temei sunt încărcate simultan, firul principal al browserului va fi ocupat o perioadă lungă de timp. Această situație este și mai accentuată pe dispozitivele mobile. Chiar dacă utilizatorul vede titlul pe ecran, el poate să nu primească un răspuns atunci când apasă pe meniu; în raportul Lighthouse, TBT va apărea ridicat.
În acest ghid, vom aborda pas cu pas ce fac atributele defer și async, când să le folosiți, cum să le aplicați în proiectele WordPress și software personalizat, ce trebuie să aveți în vedere în timpul măsurătorilor și câștigurile realiste TBT. Recomandările pentru site-urile găzduite pe infrastructura Hostragons sunt conforme cu standardele generale ale web-ului; vom discuta, de asemenea, cum alegerile corecte de hosting, CDN, SSL și caching susțin optimizarea JavaScript-ului. Pachetele de web hosting Hostragons
Ce este TBT și de ce este legat de JavaScript?
TBT este o abreviere pentru Timpul Total de Blocare și măsoară blocajul firului principal care întârzie pregătirea paginii pentru interacțiunea utilizatorului. În testele de laborator Lighthouse, numărul mare de sarcini lungi care depășesc 50 de milisecunde între First Contentful Paint și Time to Interactive va crește valoarea TBT. De exemplu, dacă o sarcină JavaScript durează 180 ms, cele 130 ms de blocaj care vin după primele 50 ms contribuie la această valoare.
Această metrică este critică din punctul de vedere al experienței utilizatorului. Deoarece, atunci când un vizitator apasă pe meniu, butonul de adăugare în coș sau câmpul de căutare după ce pagina s-a deschis, dacă browserul încă execută JavaScript, interacțiunea va fi întârziată. Utilizatorul poate percepe acest lucru ca o înghețare, o reacție întârziată sau un site defectuos. În standardele SEO din 2026, Google nu a redus experiența paginii la un singur punct, dar site-urile care oferă interacțiuni rapide și stabile au avantaj atât în ceea ce privește satisfacția utilizatorilor, cât și în ceea ce privește rata de conversie.
Semne comune ale unui TBT ridicat
- Valoarea TBT în raportul mobil PageSpeed Insights depășește 300 ms.
- În raportul Lighthouse apar avertizări precum Reduce JavaScript execution time sau Minimize main-thread work.
- În timp ce pagina este vizibilă, meniul, slider-ul, filtrele sau câmpurile de formular răspund cu întârziere.
- Scripturile de publicitate externe, suport live sau analiză apar ca având costuri mari în raport.
- În special pe dispozitive Android de nivel de intrare, se observă întârzieri la derulare și clicuri.
Un obiectiv bun este menținerea valorii TBT sub 200 ms, ceea ce este considerat sănătos pentru majoritatea site-urilor de conținut. În interfețele mai complexe de comerț electronic sau SaaS, atingerea acestui obiectiv poate necesita nu doar defer și async; ar putea fi necesare și divizarea codului, eliminarea pachetelor inutile, caching-ul, îmbunătățirea timpului de răspuns al serverului și ajustări CSS critice. Totuși, încărcarea întârziată a JavaScript-ului este una dintre primele optimizări ce ar trebui aplicate și care poate oferi rezultate rapide în majoritatea proiectelor.
Ce sunt Defer și Async?
Când un tag script este folosit în HTML în mod implicit, browserul oprește parsarea HTML-ului, descarcă fișierul JavaScript, îl execută și apoi continuă să genereze pagina. Această comportare este uneori necesară pentru scripturile critice; însă, utilizarea ei pentru fiecare fișier generează așteptări inutile. Atributele defer și async schimbă această comportare, legând descărcarea și executarea fișierului de reguli diferite.
Cum funcționează Defer?
Fișierul script la care s-a adăugat defer este descărcat în fundal în timp ce parsarea HTML-ului continuă; însă execuția acestuia are loc după ce documentul HTML a fost complet parcurs. De asemenea, mai multe fișiere care utilizează defer vor păstra ordinea în care sunt scrise în HTML. Din acest motiv, este adesea o opțiune sigură pentru scripturile JavaScript care au dependențe între ele. De exemplu, dacă mai întâi trebuie să se execute o bibliotecă și apoi scriptul temei aferente, defer ar putea fi adecvat.
Un exemplu de utilizare ar fi: <script defer src=/js/app.js></script>. În această utilizare, fișierul app.js este descărcat fără a bloca prima redare a paginii, și va fi executat pe rând atunci când DOM-ul este gata. În browserele moderne, defer este destul de bine suportat și este un instrument de optimizare de încredere pentru fișierele script clasice.
Cum funcționează Async?
Fișierul script la care s-a adăugat async este, de asemenea, descărcat în timp ce parsarea HTML-ului continuă; însă, în momentul în care descărcarea este finalizată, acesta se execută imediat. În acest interval, parsarea HTML-ului poate fi oprită pe o perioadă scurtă de timp. Async nu garantează ordinea între fișiere. Primul descărcat se va executa primul. De aceea, este mai potrivit pentru scripturi de analiză, publicitate, pixeli de urmărire, widget-uri externe sau scripturi de socializare care funcționează independent.
Exemplu de utilizare: <script async src=/js/analytics.js></script>. Acest fișier nu ar trebui să aștepte să se execute un alt script local. Dacă analytics.js este dependent de o variabilă definită mai târziu în pagină sau de o altă bibliotecă precum jQuery, async ar putea provoca erori. Așadar, async este rapid, dar necesită o clasificare atentă.
Tabloul de comparație între Defer și Async
| Caracteristică | defer | async |
|---|---|---|
| Blochează parsarea HTML-ului în timpul descărcării? | Nu, fișierul este descărcat în fundal. | Nu, fișierul este descărcat în fundal. |
| Timp de execuție | După finalizarea parsării HTML-ului. | Imediat ce fișierul este descărcat. |
| Garanția ordinii | Există, ordinea HTML este păstrată. | Nu există, primul descărcat se va executa primul. |
| Utilizare optimă | Scripturi de temă, module cu dependențe, fișiere principale ale aplicației. | Analiză independentă, publicitate, pixeli și coduri widget externe. |
| Riscuri | Poate genera întârzieri în codurile care trebuie să se execute înainte ca DOM-ul să fie gata. | Poate provoca condiții de concurență și erori în fișierele cu dependențe. |
| Influiența asupra TBT | În general, este o opțiune sigură și echilibrată pentru reducerea blocajului inițial. | Este eficient în separarea timpurie a sarcinilor externe independente. |
Regula practică este următoarea: Dacă fișierul trebuie să se execute în ordine, începeți cu defer. Dacă fișierul este complet independent, luați în considerare async. Dacă nu sunteți sigur, testați mai întâi defer în mediul de staging, verificați erorile din consolă și interacțiunile critice. ghid pentru mediu de staging și backup
Plan de implementare pas cu pas pentru încărcarea JavaScript-ului întârziat
Adăugarea aleatorie a defer sau async la fiecare tag script poate părea că îmbunătățește scorul pe termen scurt, dar poate împiedica funcțiile critice de pe site-ul de producție, cum ar fi plățile, căutările, validarea formularelor sau coșul de cumpărături. O implementare sănătoasă ar trebui să utilizeze un ciclu de măsurare, clasificare, modificări minore, teste și monitorizare.
1. Măsurați performanța curentă
Înainte de a începe, creați o valoare de bază. Înregistrați scorurile mobile și desktop cu PageSpeed Insights. Notați valorile TBT, First Contentful Paint, Largest Contentful Paint și Speed Index din raportul Lighthouse. Examinați firul principal în secțiunea Performance a Chrome DevTools; blocurile galbene lungi indică în general costurile de parsare, compilare și execuție a JavaScript-ului.
Puteți pregăti un tabel de început exemplu: TBT mobil 780 ms, timpul de execuție JavaScript 2,8 secunde, munca pe firul principal 4,5 secunde. Dacă după optimizare TBT mobil scade la 280 ms, ați obținut o îmbunătățire de aproximativ 64%. Aceste înregistrări concrete facilitează echipei să vizualizeze ce modificări au avut efect.
2. Creați un inventar de scripturi
Listati toate fișierele JavaScript încărcate în codul sursă al paginii sau în secțiunea Network. Determinați sursa fiecărui fișier, dimensiunea, momentul în care este necesar și dependențele. Împărțirea fișierelor în următoarele grupuri vă va facilita munca:
- Scripturi critice: coduri necesare imediat pentru prima vizualizare sau navigare de bază.
- Scripturi locale dependente: teme, slider-e, filtre, galerii și module de aplicație.
- Scripturi externe independente: analize, publicitate, pixeli, chat și componente de socializare.
- Scripturi inutile sau vechi: fișiere rămase de la pluginuri neutilizate.
- Scripturi care trebuie încărcate condiționat: cele necesare doar pe anumite pagini, cum ar fi validarea formularelor pe pagina de contact.
Cea mai bună optimizare nu este întotdeauna adăugarea defer, ci eliminarea unui script care nu este deloc necesar. Un fișier comprimat de 90 KB poate genera un cost de peste 300 ms, inclusiv parsare și execuție pe un dispozitiv mobil. Așadar, curățarea mai întâi a ceea ce este inutil și apoi întârzierea celor rămase este o abordare mai corectă.
3. Determinați fișierele la care se va aplica Defer
În general, scripturile principale ale temei, comportamentele meniului, codurile slider-ului, modulele galeriei de produse și fișierele bundle ale aplicației sunt candidați buni pentru defer. Totuși, o condiție importantă este ca scriptul să nu fie excesiv dependent de metodele vechi și blocante cum ar fi document.write și să fie acceptabil să se execute după ce DOM-ul este gata.
Într-o temă WordPress, jquery-migrate, fișierul principal al temei și scripturile pluginurilor pot conține dependențe complexe. Transformarea nucleului jQuery în async poate fi riscantă pentru multe site-uri; deoarece multe pluginuri așteaptă ordinea jQuery. În schimb, aplicarea defer controlată la fișierele care depind de jQuery sau utilizarea opțiunilor de încărcare optimize la nivel de plugin este mai sigură. Ghid de optimizare a vitezei WordPress
4. Alegeți fișierele la care se va aplica Async
Google Analytics, etichetele de publicitate, Facebook Pixel, LinkedIn Insight Tag, unele widget-uri externe de chat și codurile de partajare socială sunt candidați pentru async. Totuși, nu toate scripturile externe sunt la fel. Unele instrumente de suport live pot dori să creeze o sesiune de utilizator imediat ce pagina se încarcă, în timp ce unele sisteme de publicitate pot aștepta o anumită ordine a containerului. Așadar, este necesar să verificați documentația.
Transformarea unui cod de analiză independent în async nu afectează de obicei experiența utilizatorului. Totuși, pentru a reduce riscul de pierdere a datelor, verificați declanșatoarele în rapoartele în timp real. Dacă utilizați un manager de etichete, organizați condițiile declanșatoare, în loc să înghesuiți toate etichetele într-un singur container. De exemplu, scriptul de urmărire a comentariilor nu ar trebui să se încarce pe paginile fără formular de comentarii, iar scriptul de interacțiune a produselor nu ar trebui să se încarce pe paginile fără pagină de produs.
5. Adăugați încărcarea condiționată și bazată pe evenimente
Defer și async sunt un bun început; dar încărcarea fișierelor JavaScript în funcție de comportamentul utilizatorului poate avea un impact mai mare asupra TBT. Caseta de suport live nu trebuie să se încarce imediat ce pagina se deschide, ci poate fi încărcată atunci când utilizatorul rămâne 5 secunde sau apasă butonul de ajutor. Codul pentru embed-ul hărții poate fi încărcat atunci când utilizatorul derulează în secțiunea de contact. Scriptul player-ului video poate fi apelat atunci când utilizatorul apasă butonul de redare.
Această abordare este eficientă în special pe site-urile de conținut și site-urile corporative. Deoarece vizitatorul nu are nevoie de fiecare widget pe fiecare pagină. Eliminarea a 200 KB de JavaScript de la prima încărcare poate reduce valoarea TBT cu sute de milisecunde pe procesoare mobile slabe.
6. Testați și publicați treptat
În loc să aplicați modificările direct pe site-ul live, testați în mediul de testare. Efectuați teste manuale pe paginile critice, cum ar fi pagina principală, pagina de categorie, pagina de produse sau servicii, pagina de contact, formularul de login și fluxul de plată. Verificați dacă există erori în consola browser-ului. În special, erorile de tipul Cannot read property, is not defined și undefined function indică probleme de ordonare sau de dependență.
Avansați treptat în tranziția către live. Mai întâi, optimizați scripturile externe independente, apoi treceți la scripturile temelor. După fiecare modificare, repetați raportul Lighthouse cu aceeași rețea și simulare a dispozitivului. Nu vă bazați pe o singură măsurare; medierea a 3 teste oferă rezultate mai sănătoase.
Note de aplicare pentru Defer și Async pe site-urile WordPress
În ecosistemul WordPress, fișierele JavaScript sunt încărcate prin funcția wp_enqueue_script, fie prin teme, fie prin pluginuri. Începând cu 2026, în versiunile moderne de WordPress, strategiile pentru scripturi pot fi definite într-un mod mai controlat. Totuși, temele vechi, pluginurile de construcție a paginilor și pluginurile de optimizare incompatibile pot provoca conflicte.
Dacă utilizați un plugin de performanță, creați o listă de excludere în loc să amânați întreaga JavaScript cu un singur clic. Pagina de plată, logarea utilizatorilor, bara de administrare, scripturile de autentificare și captcha pot fi sensibile. Pe un site care folosește WooCommerce, fragmentările coșului, scripturile gateway-ului de plată și selectorii de variație trebuie testate cu siguranță. Soluții de hosting WooCommerce
Ordinea practică pentru WordPress ar putea fi: mai întâi, eliminați pluginurile neutilizate. Apoi, faceți condiționate fișierele pluginurilor care trebuie să fie încărcate doar pe anumite pagini. Apoi, testați defer pe scripturile temei și pluginurilor. În cele din urmă, utilizați async sau încărcare întârziată pe codurile externe independente. Această metodă reduce riscul de a avea erori mari în același timp.
Ce trebuie să aveți în vedere în proiectele de software personalizat și framework-uri
Optimizarea JavaScript-ului în structuri moderne precum React, Vue, Angular, Next.js, Nuxt sau similare nu înseamnă doar adăugarea defer în tagul HTML. Dimensiunea pachetului, divizarea codului, eliminarea codului inutil, importurile dinamice și costurile de hidratare sunt determinante pentru TBT. Dacă un singur fișier bundle are 700 KB, chiar și utilizarea defer poate bloca firul principal pentru o perioadă lungă în timpul execuției.
În proiectele de software personalizat, utilizați divizarea codului pe baza rutelor. Când utilizatorul este pe pagina principală, codul pentru panoul de administrare, biblioteci grafice sau editori avansați nu ar trebui să fie descărcat. Apelați componentele grele cu importuri dinamice atunci când sunt necesare. Identificați dependențele neutilizate cu instrumente de analiză a pachetelor. Luați în considerare alternative mai ușoare în loc de biblioteci mari pentru date, grafic sau animații.
Proiectele care folosesc randare pe server sau generare statică trebuie de asemenea să fie tratate cu atenție. Chiar dacă HTML-ul vine rapid, activarea simultană a sute de componente în timpul etapei de hidratare poate crește valoarea TBT. Evitarea JavaScript-ului client-side inutil în conținutul non-interactiv este esențială pentru abordarea de performanță din 2026.
Relația dintre Hosting, Timpul de Răspuns al Serverului și Performanța JavaScript-ului
TBT este direct legat de timpul de execuție JavaScript în browser; însă infrastructura de hosting afectează indirect rezultatele. TTFB lent, lipsa comprimării, absența suportului pentru HTTP/2 sau HTTP/3, caching-ul slab și întârzierile cauzate de locații îndepărtate pot duce la livrarea mai târzie a fișierelor JavaScript. Când fișierele ajung mai târziu, ciclul de viață al paginii se extinde și experiența utilizatorului se degradează.
O infrastructură de hosting de calitate susține optimizarea prin Brotli sau Gzip, caching-ul browserului activat, versiuni actuale de PHP, tehnologie rapidă a discurilor și integrarea CDN-ului. Instalarea corectă a certificatului SSL este, de asemenea, importantă în ceea ce privește caracteristicile moderne ale browserului, HTTP/2 și integrarea sigură a terților. Certificate SSL Hostragons Verificarea domeniului Hostragons
De exemplu, același fișier JavaScript poate fi de 320 KB fără comprimare, dar poate scădea la 95 KB cu Brotli. Aceasta nu reduce direct valoarea TBT în aceeași proporție; deoarece TBT măsoară costurile de execuție. Totuși, timpul de descărcare se scurtează, prioritizarea resurselor devine mai relaxată și experiența totală de încărcare se îmbunătățește. Prin urmare, defer, async, caching-ul și hostingul corect ar trebui să fie considerate împreună.
Lista de verificare pentru măsurare și validare
Pentru a evalua dacă optimizarea a fost de succes, nu este suficient să te uiți doar la scorul PageSpeed. Lista de verificare de mai jos vă va ajuta să evaluați mai precis impactul real:
- A fost comparată valoarea TBT mobil înainte și după optimizare?
- A scăzut numărul fișierelor cele mai costisitoare în raportul de timp de execuție JavaScript?
- A scăzut numărul de sarcini lungi în înregistrarea Performance din Chrome DevTools?
- Există erori JavaScript în consolă?
- Funcționează fără probleme fluxurile de meniu, căutare, filtre, formulare, coș și plată?
- Se declanșează corect etichetele de analiză și publicitate externe?
- Datele utilizatorilor reali arată îmbunătățiri în INP și întârzierile de interacțiune?
- Au fost testate modificările după curățarea cache-ului?
Punctul important aici este să separați datele de laborator de cele din teren. TBT este o metrică de laborator Lighthouse. Experiența reală a utilizatorului a făcut ca Interaction to Next Paint (INP) să devină mai determinativ. Totuși, scăderea TBT contribuie adesea la îmbunătățirea INP, deoarece există mai puțin blocaj în firul principal.
Eroarea frecventă și modalitățile de evitare
Făcând toate scripturile async simultan
Aceasta este una dintre cele mai frecvente greșeli. Deoarece async nu garantează ordinea, poate genera erori aleatorii în fișierele cu dependențe. O structură care pare să funcționeze fără probleme pe o pagină poate fi deteriorată pe o conexiune lentă sau pe un browser diferit. În fișierele cu dependențe, defer este un început mai sigur.
Amânarea greșită a jQuery și a pluginurilor dependente
În special pe site-urile WordPress, multe pluginuri depind de ordinea jQuery. Transformarea nucleului jQuery în async poate determina codurile pluginurilor să se execute înainte ca jQuery să fie încărcat. Soluția este să vizualizați rețeaua de dependențe și să includeți fișierele critice în lista de excludere.
Lăsând scripturile externe necontrolate
Proprietarul site-ului poate uita să optimizeze codurile publicitare, de chat și de analiză în timp ce îmbunătățește fișierele temei. Totuși, în raportele Lighthouse, cele mai costisitoare sarcini provin adesea din surse externe.