Kako da rešite Avoid an excessive DOM size problem u WordPress-u

Veličina DOM-a (Document Object Model) postaje sve aktuelnija tema kada je u pitanju optimizacija web sajtova za search engine (SEO). Ovo se posebno odnosi na sajtove uzrađene u WordPress-u.
Problem nastaje kada DOM postane previše složen ili glomazan, jer to može da utiče negativno na brzinu učitavanja sajta, na njegove performanse, pa čak i na rangiranje vašeg sajta u search engine-ima.
Spor web sajt može povećati bounce rate, i na taj način da ugrozi vašu poziciju u Google pretragama. Zbog toga, sve više alata za analizu performansi, kao što je Google PageSpeed Insights, u sklopu analize web sajta daje preporuku Avoid an excessive DOM size.

Ova preporuka signalizuje da vaš web sajt ima previše DOM elemenata i da je verovatno vreme da se pozabavite optimizacijom DOM-a.
Zato ćemo u ovom tekstu objasniti šta je DOM, kao i kako preterana veličina DOM-a može uticati na performanse vašeg web sajta. Takođe, daćemo vam i neke preporuke za optimizaciju koje možete uraditi pomoću plugin-a ili ručno.
Poseban fokus stavićemo na WordPress, zbog njegove popularnosti i velikog broja plugina koji često mogu uzrokovati preterano ugnježdene i nepotrebne DOM strukture.
Šta je DOM?
DOM, ili Document Object Model, je struktura koja predstavlja HTML i XML dokumente kao objekte u formi stabla. Kada browser učita vašu web stranicu, on interpretira HTML kod i kreira DOM — model koji predstavlja sve elemente na stranici kao čvorove u hijerarhiji.
Ovi čvorovi predstavljaju HTML tagove kao što su <div>
, <p>
, <a>
, slike, forme i svi drugi elementi koji su prisutni na stranici.

Pojednostavljeno rečeno, DOM je mapa koja browser-u omogućava da prikaže sadržaj vašeg web sajta i omogući interakciju sa njim.
Na primer, svaki put kada korisnik klikne na dugme, browser koristi DOM da identifikuje gde se taj element nalazi i šta treba da se desi kada se klikne na njega.
Ukoliko želite da se detaljno upoznate sa pojmom DOM-a, predlažemo da pročitate tekst na našem blogu HTML – Šta je DOM?
Kako funkcioniše DOM?
Svaki element na vašoj web stranici, bilo da se radi o tekstu, slikama ili interaktivnim elementima, predstavlja deo DOM strukture. Kada browser učitava stranicu, on kreira hijerarhiju elemenata počevši od glavnog html elementa na vrhu, koji dalje sadrži head i body elemente, i tako dalje. Ova struktura omogućava browser-u da razume kako da prikaže i stilizuje sadržaj stranice.
Na primer, ako vaša stranica ima nekoliko ugnježdenih sekcija, kao što su header
, nav
, i section
, DOM će izgledati ovako:

Svaki element u DOM-u, bilo da je tekst, slika ili dugme, predstavlja čvor u stablu. DOM ne samo da omogućava prikazivanje sadržaja, već i omogućava interakciju sa njim putem JavaScript-a, što je posebno važno za interaktivne komponente sajta.
Međutim, problem nastaje kada DOM postane previše složen, sa previše elemenata ili previše ugnježdenih elemenata. Na primer, stranica sa mnogo slika, dugim listama ili komplikovanim strukturama može povećati veličinu DOM-a, što otežava browser-u da brzo interpretira i prikaže sadržaj.
Preterano veliki DOM može da izazove sledeće probleme:
- Duže vreme učitavanja: Što je veća DOM struktura, to browser-u treba više vremena da obradi sve elemente. To produžava vreme učitavanja stranice, što negativno utiče na korisničko iskustvo.
- Smanjena interaktivnost stranice: Veliki DOM može usporiti interakcije na stranici. Na primer, klik na dugme može izazvati kašnjenje u odgovoru, što može frustrirati posetioce.
- Veće opterećenje memorije: Browser koristi memoriju za obradu DOM-a, a prekomplikovane strukture troše više memorijskih resursa, naročito na mobilnim uređajima sa slabijim procesorima.
S obzirom na sve ove faktore, optimizacija veličine DOM-a postaje ključna za održavanje brzine, efikasnosti i SEO performansi vašeg sajta.
Kako preterana veličina DOM-a utiče na performanse web sajta?
Sada kada bolje razumete osnovne koncepte DOM-a, vreme je da se detaljnije pozabavimo njegovim uticajem na performanse sajta. Kada se kaže da je DOM preterano veliki, to znači da browser mora obraditi više elemenata nego što je optimalno. Ovo može imati nekoliko značajnih posledica:
Duže vreme učitavanja stranice
Kada DOM struktura postane previše složena, browser troši više vremena na njeno procesuiranje, što produžava vreme učitavanja web sajta. Konkretno, browser mora da prođe kroz svaki element u DOM-u kako bi generisao konačni prikaz stranice. Što je veći broj elemenata, to browser-u treba više vremena da to uradi. Ovaj proces posebno pogađa Google metrike kao što su:
- First Contentful Paint (FCP): Ovo je vreme koje browser-u treba da prikaže prvi sadržaj na ekranu. Ako je DOM prevelik, FCP će biti sporiji, što ostavlja utisak da se stranica učitava sporo.
- Time to Interactive (TTI): Ovo se odnosi na vreme koje je potrebno da stranica postane potpuno interaktivna, odnosno da korisnik može da ostvari interakciju sa njom. Sa velikim DOM-om, TTI se povećava, jer browser-u treba više vremena da obradi sve elemente i omogući potpunu interakciju.
Smanjena interaktivnost i lošije korisničko iskustvo
U današnje vreme korisnici očekuju brzu interakciju sa web sajtom. Ako browser mora da procesuira previše elemenata, mogu se pojaviti kašnjenja prilikom klika na dugme, unosa teksta u forme ili skrolovanja stranice. Ovo može da dovede do toga da korisnici izgube strpljenje i napuste sajt, što povećava bounce rate vašeg web sajta.
Na primer, dugme na stranici sa previše ugnježdenih elemenata može imati kašnjenje u izvršenju akcije. Korisnik klikne na dugme, ali zbog preopterećenog DOM-a, akcija se izvrši tek nakon nekoliko sekundi. Ova vrsta kašnjenja može biti presudna kada je u pitanju zadržavanje korisnika na sajtu.
Opterećenje na memoriju i procesor
Preterano veliki DOM može ozbiljno opteretiti memoriju i procesorsku snagu uređaja korisnika, posebno na mobilnim uređajima. Kada browser učitava stranicu sa velikim brojem elemenata, koristi više memorije za obradu tih elemenata, a to može da uspori uređaj ili čak da izazove zamrzavanje browser-a. Mobilni uređaji, sa svojim ograničenim resursima, su posebno osetljivi na ovakve probleme.
Negativan uticaj na SEO
Google-ovi algoritmi uzimaju u obzir brzinu učitavanja sajta i korisničko iskustvo kao ključne faktore za rangiranje stranica. Spor sajt sa prevelikom DOM strukturom može biti negativno ocenjen od strane Google-a, što može rezultirati lošijim rangiranjem u rezultatima pretrage. Što su lošije performanse sajta, to su manji izgledi da će se on pojaviti na prvoj strani u SERP-u.
Koliko DOM elemenata je previše?
Kao što smo već pomenuli, ne postoji striktno definisan broj DOM elemenata koji će automatski prouzrokovati probleme, ali su neke opšte preporuke da:
- Stranica ne premašuje 1500 DOM elemenata.
- Nivo ugnježdenosti ne bude dublji od 32 nivoa.
- Jedan parent element ne bi trebalo da ima više od 60 child elemenata.
Ako vaš web sajt premašuje ove vrednosti, verovatno je vreme za optimizaciju.
Kako optimizovati DOM veličinu u WordPress-u?
Sada ćemo preći na konkretne savete i tehnike za smanjenje veličine DOM-a i optimizaciju vašeg WordPress sajta. Ove metode će uključivati rešenja sa plugin-ima, ali i manuelna rešenja za one koji vole veću kontrolu nad kodom.
Proverite svoje teme i plugin-e
Teme i plugin-i često doprinose preteranoj veličini DOM-a jer generišu dodatne HTML elemente koji mogu biti nepotrebni ili loše optimizovani. Na primer, vizuelno kompleksne teme mogu dodati višestruko ugnježdenje unutar HTML-a kako bi kreirale željene dizajnerske efekte.
- Optimizovane teme: Preporučuje se korišćenje tema koje su dizajnirane s minimalnim brojem HTML elemenata i čistom strukturom. Na primer, teme kao što su GeneratePress ili Astra su poznate po svom minimalističkom pristupu, što smanjuje broj DOM elemenata i ubrzava učitavanje stranica.
- Deaktivirajte nepotrebne plugin-e: Mnogi plugin-i dodaju složene DOM strukture. Proverite da li zaista koristite sve instalirane plugin-e. Ako ne, deaktivirajte ih. Na primer, plugin-i za društvene medije često dodaju mnogo dodatnih elemenata koji mogu biti nepotrebni.
Ako ste tehnički potkovani, možete i manuelno prilagoditi temu kako biste eliminisali nepotrebne elemente:
- Ručna optimizacija HTML-a: Optimizujte kod tako što ćete ukloniti nepotrebne div tagove ili nepotrebno ugnježdene elemente. Na primer, umesto korišćenja više div elemenata za grupisanje sadržaja, možete koristiti semantičke HTML elemente kao što su
<section>
,<article>
, i<nav>
, koji smanjuju složenost DOM-a. - Smanjite ugnježdenje: Izbegavajte preterano ugnježdenje elemenata unutar drugih elemenata. Često je moguće dizajnirati web sajt koristeći jednostavnije strukture bez gubitka funkcionalnosti ili vizuelne privlačnosti.
Koristite optimizovan Page Builder
Page builderi poput Divi-a, Elementor-a, Brizy-a i Beaver Builder-a su veoma popularni zbog svoje fleksibilnosti i jednostavnosti korišćenja, ali često generišu prevelik broj DOM elemenata, što može usporiti vaš sajt.
- Koristite Gutenberg: Gutenberg je WordPress page builder koji podrazumevano dolazi sa WordPress-om i generiše manje DOM elemenata nego ostali page builderi. On je direktno integrisan sa WordPress-om, što ga čini laganijim za browser.
- Smanjite upotrebu widgeta: Ako koristite page builder, pazite da ne pretrpavate stranice sa previše widgeta, redova i kolona. Svaki dodatni element povećava broj DOM elemenata, pa je važno da koristite samo one funkcionalnosti koje su vam zaista neophodne.
Ako ne želite da koristite page builder, razmislite o kreiranju prilagođenih stranica pomoću ručnog kodiranja u HTML-u. To će vam omogućiti veću kontrolu nad strukturom stranice i brojem DOM elemenata.
- Kreirajte prilagođeni HTML i CSS: Umesto da koristite page builder za jednostavne stranice, možete ih kreirati ručno koristeći čisti HTML i CSS. Na ovaj način, možete izbeći nepotrebno generisanje DOM elemenata koje dodaju page builderi.
Takođe, neke page builder-e možete uz malo truda dodatno optimizovati. Ukoliko želite da saznate više o tome pročitajte Kako da ubrzate Elementor web sajt.
Optimizujte slike i video
Multimedijalni sadržaji, kao što su slike i video, značajno doprinose veličini DOM-a. Pravilna optimizacija ovih elemenata može pomoći u smanjenju DOM-a i poboljšanju brzine učitavanja.
- Koristite plugin za kompresiju slika: Plugin-i kao što su Smush ili ShortPixel automatski komprimiraju slike prilikom njihovog dodavanja na vaš WordPress sajt, smanjujući njihovu veličinu bez gubitka kvaliteta.
- Lazy load za video: Video zapisi su veliki resursi i mogu značajno povećati veličinu DOM-a. Korišćenjem lazy load tehnike, kao što je implementacija sa Lazy Load for Videos plugin-om, možete učitati video sadržaj tek kada korisnik skroluje do dela stranice gde se nalazi video.
Ukoliko ne želite da koristite plugin-e, možete primeniti i neko od sledećih rešenja:
- Ručno kompresujte slike: Koristite alate kao što su TinyPNG ili JPEG-Optimizer kako biste ručno smanjili veličinu slika pre nego što ih dodate na sajt. Ovo smanjuje vreme učitavanja stranice jer browser neće morati da preuzima velike slike.
- Lazy load bez plugin-a: Ako ne želite da koristite plugin za lazy loading, možete ručno dodati
loading="lazy"
atribut svakom tagu slike ili video zapisa kako biste omogućili odloženo učitavanje tih elemenata.
Primer:
<img src="slika.jpg" loading="lazy" alt="Lazy load slika">
Ova tehnika je jednostavna i ne zahteva dodatne alate, a efekat na performanse sajta može biti veoma pozitivan.
Ukoliko želite detaljno uputstvo na temu optimizacije slika pročitajte Kako da optimizujete slike za vaš WordPress web sajt.
Napravite paginaciju komentara i sadržaja
Ako vaš web sajt ima veliki broj komentara ili dugačke postove sa mnogo slika i drugih elemenata, to može značajno povećati DOM veličinu. Paginacija omogućava da se sadržaj podeli na više manjih strana, čime smanjujete broj elemenata koje browser mora učitati odjednom.
- WP-PageNavi plugin: Ovaj plugin vam omogućava da lako implementirate paginaciju za komentare i dugačke postove. Umesto da prikazujete sve komentare na jednoj stranici, možete ih podeliti na više manjih strana, smanjujući broj DOM elemenata koje browser mora da obradi.
- WP-Paginate plugin: Ovaj plugin je idealan za paginaciju dugačkih postova sa mnogo sadržaja. Njegova funkcionalnost vam omogućava da podelite sadržaj na više manjih strana, što ne samo da smanjuje veličinu DOM-a, već i poboljšava korisničko iskustvo.
Dobro je da znate da WordPress već ima ugrađenu funkcionalnost za paginaciju, pa ne morate da koristite plugin.
Paginaciju komentara možete da uradite tako što ćete otići na Settings > Discussion i aktivirati opciju za razdvajanje komentara na više strana. Ovo će smanjiti broj elemenata na jednoj stranici, čime se poboljšava brzina učitavanja.
Ako imate veoma dugačke postove, možete ručno podeliti sadržaj koristeći WordPress-ov <!--nextpage-->
tag. Ovo će razdvojiti sadržaj na više strana, smanjujući broj DOM elemenata na svakoj strani.
<p>Ovo je prvi deo sadržaja.</p>
<!--nextpage-->
<p>Ovo je drugi deo sadržaja.</p>
Minifikujte CSS i JavaScript fajlove
Minifikacija CSS i JavaScript fajlova podrazumeva uklanjanje nepotrebnih znakova kao što su razmaci, komentari i prazne linije, čime se smanjuje veličina fajlova i ubrzava njihovo učitavanje. Ovo može značajno smanjiti broj zahteva koje browser šalje serveru i ubrzati proces prikazivanja stranice.
- Autoptimize plugin: Ovaj plugin automatski minifikuje i kombinuje CSS, JavaScript i HTML fajlove, što smanjuje broj HTTP zahteva i ubrzava učitavanje stranica. Nakon instalacije, idite na Settings > Autoptimize i omogućite minifikaciju resursa. Autoptimize takođe omogućava keširanje i odlaganje učitavanja skripti, što dodatno poboljšava performanse.
- WP Rocket plugin: Ovo je premium rešenje koje pored minifikacije CSS i JavaScript fajlova nudi i napredne opcije kao što su lazy loading, keširanje i optimizacija za mobilne uređaje. WP Rocket automatski smanjuje veličinu fajlova i optimizuje učitavanje stranice.
Ako ne želite da koristite plugin, možete da ručno minifikujete fajlove koristeći online alate ili tako što ćete ugraditi minifikovan kod direktno u vašu temu.
Ukoliko želite minifikaciju možete uraditi i online, tako što ćete koristiti alate kao što su CSS Minifier ili JSCompress za minifikaciju koda. Nakon što optimizujete CSS ili JavaScript fajl, ručno ga ubacite u vašu temu.
Svedite na najmanju moguću meru JavaScript i CSS kod koji blokira renderovanje
Render-blocking resursi su CSS i JavaScript fajlovi koji se učitavaju pre nego što browser prikaže sadržaj stranice. Ovi resursi često mogu da uspore učitavanje, jer browser mora prvo da učita i obradi te fajlove pre nego što bilo šta prikaže na ekranu.
- Async JavaScript plugin: Ovaj plugin omogućava jednostavno dodavanje
async
ilidefer
atributa JavaScript fajlovima, čime odlažete njihovo učitavanje dok se osnovni sadržaj ne prikaže. To omogućava browser-u da prikaže stranicu brže, dok se skripte učitavaju u pozadini. - WP Rocket za odlaganje skripti: WP Rocket ima ugrađenu funkcionalnost za odlaganje učitavanja CSS i JavaScript fajlova. Ova opcija omogućava učitavanje kritičnih resursa odmah, dok se manje važni resursi učitavaju kasnije.
Ako želite da ručno optimizujete JavaScript i CSS kod, to možete uraditi na sledeći način:
- Dodajte async i defer atribute ručno: Pristupite header.php ili functions.php fajlu vaše teme i dodajte
async
ilidefer
atribute JavaScript fajlovima kako biste odložili njihovo učitavanje.
<script src="script.js" defer></script>
- Kritični CSS inline: Da biste ubrzali prikazivanje stranice, možete ručno da izdvojite kritični CSS (neophodan za prvi prikaz stranice) i dodati ga direktno u sekciju, dok se ostatak CSS fajlova može učitati asinhrono.
Omogućite keširanje
Keširanje je tehnika koja omogućava browser-u da čuva kopije stranica i resursa, kako bi ih brže učitao prilikom sledeće posete. Ovo smanjuje broj zahteva serveru i značajno ubrzava učitavanje.
- W3 Total Cache plugin: W3 Total Cache je jedan od najpopularnijih alata za keširanje u WordPress-u. Omogućava vam keširanje stranica, objekata, baze podataka i browser keširanje. Ovo smanjuje vreme učitavanja stranica i opterećenje servera.
- LiteSpeed Cache (ili LSCashe) je all-in-one plugin za keširanje WordPress sajtova. On dolazi sa integrisanim keširanjem na serverskom nivou i velikom kolekcijom alata za optimizaciju sajta.
Pored podrške za klasičnu instalaciju, ima podršku i za višesajtnu (multi-site) WordPress instalaciju i kompatibilan je sa mnogim popularnim pluginima, uključujući WooCommerce i Yoast SEO.
Ako želite da ručno implementirate keširanje, možete to da uradite i putem .htaccess fajla.
- Dodavanje keširanja u .htaccess: Ako koristite Apache server, možete ručno da postavite keširanje resursa dodavanjem pravila u .htaccess fajl.
Primer:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/javascript "access 1 month"
</IfModule>
Ukoliko želite da saznate više o keširanju, pročitajte Kako da ubrzate svoj WordPress sajt pomoću LiteSpeed Cache plugin-a.
Koristite CDN
CDN (Content Delivery Network) pomaže u distribuciji vašeg sadržaja preko globalne mreže servera, omogućavajući brže učitavanje stranica bez obzira na to gde se vaši korisnici geografski nalaze. Korišćenjem CDN-a, smanjujete opterećenje vašeg servera i ubrzavate dostavljanje sadržaja korisnicima.
- Cloudflare CDN: Cloudflare je besplatan CDN servis koji nudi brojne opcije optimizacije, uključujući zaštitu od DDoS napada i keširanje. Nakon što se prijavite, možete integrisati Cloudflare pomoću njihovog WordPress plugin-a, što automatski optimizuje učitavanje resursa.
Ako ne želite da koristite plugin, možete ga ručno integrisati CDN podešavanjem DNS zapisa.
- Ručno podešavanje CDN-a: Nakon registracije na Cloudflare ili drugi CDN servis, ručno promenite DNS zapise vašeg domena kako bi sav promet prošao kroz CDN mrežu. Ovo smanjuje latenciju i omogućava brže učitavanje resursa.
Ukoliko želite da saznate kako da aktivirate Cloudflare na svom web sajtu, pročitajte Kako da aktivirate Cloudflare u cPanel-u.
Optimizujte bazu podataka
WordPress baza podataka može vremenom postati pretrpana, naročito zbog akumulacije revizija postova, spam komentara i privremenih podataka (transijenata). Optimizacija baze podataka može ubrzati upite i smanjiti opterećenje servera.
- WP-Optimize plugin: WP-Optimize je odličan alat za automatsko čišćenje i optimizaciju baze podataka. Ovaj plugin uklanja revizije postova, spam komentare i transijente, što poboljšava performanse sajta i smanjuje opterećenje na serveru.
- Advanced Database Cleaner: Ovaj plugin pruža napredne opcije za ručno ili automatsko čišćenje baze podataka, uključujući uklanjanje zastarelih podataka i revizija.
Pored navedenih plugin-a, iste funkcionalnosti možete pronaći i u Litespeed plugin-u za WordPress.
Ako želite da ručno optimizujete bazu podataka, to možete da uradite na sledeći način:
Pristupite bazi podataka putem phpMyAdmin-a i izvršite SQL upite za uklanjanje revizija i optimizaciju tabela.
Primer za brisanje revizija:
DELETE FROM wp_posts WHERE post_type = 'revision';
Takođe, možete optimizovati tabele pomoću komande:
OPTIMIZE TABLE wp_posts, wp_comments, wp_options;
Ove komande će poboljšati brzinu pristupa bazi podataka i smanjiti veličinu tabela.
Ukoliko želite da se detaljnije poizabavite ručnim čišćenjem WordPress baze podataka, pročitajte Kako da ručno očistite WordPress bazu podataka (bez plugina).
Zaključak
Kao što ste videli, optimizacija veličine DOM-a je izuzetno važna za postizanje boljih performansi sajta, posebno u kontekstu WordPress-a, gde plugin-i i teme često doprinose složenoj i preopterećenoj DOM strukturi.
Korišćenjem tehnika kao što su lazy loading, paginacija, minifikacija fajlova, keširanje, i optimizacija baze podataka, možete značajno smanjiti opterećenje browser-a i poboljšati korisničko iskustvo.
Rezultat će biti brži, efikasniji sajt, sa boljim rezultatima u serach engine-ima i većim zadovoljstvom korisnika.
Nenad Mihajlović