U ovom članku pisaću o tome kako testirati brzinu i ponašanje sajta, radi provere da li testirani metod optimizacije daje rezultate. Isto važi za poređenje različitih poešavanja, WordPress plaginova i sl.
Ograda: nisam profesionalni web-developer, niti bih nazvao sebe ekspertom. Ne radim testiranja za novac – glavni motiv mi je da proverim šta je najbolje za upotrebu na mojim sajtovima. Budžet za testiranje se svodi na moje slobodno vreme (nikakvi plaćeni alati za testiranje, namenski postavljeni serveri itd.). Sve date informacije prihvatiti u smislu: “najbolje / koliko ja znam” – uz sve dodatke, a pogotovo kritike, više nego dobrodošle – kako bi se unapredile pružene informacije.
Sadržaj:
- Zašto uopšte pišem i objavljujem ovakve stvari
- Koje metode testiranja sajtova sam koristio
- Gremlin metod testiranja sajta v2
- Testiranje metoda testiranja
- Rezultati testiranja metoda testiranja 🙂
5.1. GTmetrix testiranje
5.2. Octoperf testiranje - Zaključak
- Dodatak: Testovi bez keširanja
1. Zašto uopšte pišem i objavljujem ovakve stvari
Logično pitanje, na koje mislim da ovde vredi dati odgovor. Postoji više razloga iz kojih objavljujem članke na svojim sajtovima:
Krpljenje rupa u sopstvenom znanju
Kada pišem članak, na koju god temu, trudim se pisati tako da to bude jasno i “početniku”. Verujem da čovek može reći da nešto zna, tek kada je u stanju to objasniti laiku (ili/i detetu).
Sad, kad počnem razmišljati i pisati sa tim na umu, lako primetim ako postoje neke rupe u mom znanju, pa onda još učim/istražujem/čitam/testiram… Ovo je iznenađujuće efektan metod koji mi je pomogao i u školi i na poslu. Vredi uloženog vremena.
Lični podsetnik
Informacije koje sam lično skupio, proverio i objavio su, barem za mene, najpouzdanije. Često koristim svoje sajtove kao lični podsetnik / referencu. Nekad je i zabavno čitati starije članke i videti kako si bio glupav. 🙂
Članak na temu tehničke podrške hosting provajdera mi je čak doneo i neke ponude za posao – to je bilo neočekivano.
Olakšavanje davanja odgovora na često postavljana pitanja
Za pitanja koja ljudi često postavljaju, lakše mi je dati im link ka članku u kojem sam to objasnio, nego objašnjavati jedno te isto po 1000 puta. Uz to i dobar je osećaj kad se deljenjem znanja i iskustva pomaže zajednici.
Dobijanje pomoći od eksperata
Kad imam lepo zapisano i dokumentovano šta sam sve radio (i, možda zeznuo), lakše je dobiti koristan i konstruktivan savet od eksperata. Detalj koji mi deluje trivijalno, ili ga zaboravim za par meseci, može se pokazati kao ključan.
Donosi zaradu
Poslednje, ali mnogima, ne najmanje važno. 🙂 Da, moji sajtovi donose dodatnu zaradu. Koristim AdSense reklame (moj Google AdSense eksperiment) i, kada spominjem proizvode, koristim affiliate linkove za one koje koristim i koje bih preporučio (ako nude affiliate program, ako ne – onda samo linkovi). Počeo sam to raditi besplatno (praktično on-line objavljivanjem svojih biciklističkih beleški i tabela), ali nije loše i nešto zaraditi (ako se time ne žrtvuje kvalitet). Mana ovoga su povremene optužbe za “samopromociju radi zarade”. 🙂 Ne možeš svima udovoljiti.
Dopuna: još jedno logično pitanje koje dobijam eksplicitno, ili uvijeno – ne, ni jedan članak, test, ili recenzija koju sam objavio nije naručena, pogotovo ne plaćena, od strane ni jedne kompanije, osim kada je drugačije eksplicitno navedeno na početku članka. Kamo sreće da jesu. 🙂 Moji tekstovi su uglavnom dugački, detaljni i najverovatnije dosadni većini ljudi – pretpostavljam da to nije ono što bi kompanije poželele radi povećanja prodaje. Ako neka kompnaija ipak želi da plati za vreme koje bih proveo u testiranju njihovog proizvoda, to ću uraditi sa zadovoljstvom, ali pod sledećim uslovima:
- Mogu se davati sugestije, ali sadržaj objavljenog teksta je nešto o čemu odlučujem isključivo ja. Ako pišem o proizvodu, svakako ću objaviti i sve uočene nedostatke, zajedno sa onim što je dobro.
- Tekst možete dobiti na uvid pre objave, pa ako vam se baš ne svidi, da ga ne objavim uopšte. Mislim da je to pošteno kad se već plaća. Ali neću menjati tekst tako da izgleda bolje nego što jeste – tu podvlačim crtu.
- Sve donacije čitalaca su više nego dobrodošle – PayPal me.
2. Koje metode testiranja sajtova sam koristio
Već sam pisao o načinu testiranja sajtova u prvom članku o optimizaciji sajta – merenje. Ipak, većina tih testova su rađeni na “živom” (“produkcionom”) sajtu – pre i nakon migracije, izmena i sl.
Testirao sam i koliko su dobro nalozi izolovani u reseller hosting okruženju, tj. da li test opterećenja pokrenut na jednom cPanel (ili DirectAdmin) nalogu, dovodi do većeg zauzeća resursa na ostalim (pod)nalozima resellera. Zaključio sam da ne:
Ovo je naročito slučaj kod provajdera koji koriste CloudLinux. Naravno, pošto u shared okruženju puno sajtova deli resurse jednog fizičkog servera, u slučaju da se ukupni resursi servera preopterete, opterećenje će se svakako odraziti i na performanse ostalih sajtova, čak i ako nije prikazano u statistici. Tako da vredi baciti oko i na ukupno opterećenje servera, pogotovo prilikom testiranja (siguran sam da postoje i bolja, automatizovana rešenja, ali besplatni open source phpSysInfo radi na mnogim shared hosting okruženjima):
Takođe sam utvrdio da vreme učitavanja stranice (i veličina, kao i broj zahteva) raste kada je Google AdSense uključen i kada su Google reklame prikazane na stranici:
Sličan efekat prave i ubačeni (eng. “embedded”) YouTube snimci.
Članak u kojem sam opisao svoje testiranje i poređenje Yoast i The SEO Framework plaginova koristio je metod testiranja na jednom sajtu, ponovljenog pre i posle izmena. Linkovao sam taj članak par puta na Reddit-u, u diskusijama koje se bave WordPress SEO plaginovima. U jednoj od diskusija su se uključili i autori The SEO Framework plagina (link ka Reddit diskusiji o zameni za Yoast). Naveli su neke primedbe na moje metode testiranja, koje su delovale opravdano. Što me je navelo na razmišljanje.
3. Gremlin metod testiranja sajta v2
Pokušao sam iznaći metod koji bi omogućio sledeće:
- Brzo i efikasno testiranje sajta, tako da test ne traje nedeljama, ili mesecima.
- Dovoljna preciznost (ako ne i tačnost), pogotovo kada se porede relativno male razlike u brzini (između dva podešavanja, plagina i slično).
- Uporedivost rezultata – tj. da bude što standardnije kada se vremenom koristi za testiranje različitih promena – barem kada su moji sajtovi u pitanju (sa hostingom i podešavanjima koja ja koristim).
- Mogućnost da treće strane provere i potvrde, ili opovrgnu rezultate (sa hostingom i podešavanjima koje oni koriste, da vide šta je bolje za njihov sajt). Cilj je da testovi budu što je moguće objektivniji.
Na osnovu toga, moj metod bi bio sledeći:
- Kreiranje dva identično podešena hosting naloga (moje podešavanje hosting naloga za WordPress). Na dva odvojena cPanel naloga, kod jednog hosting provajdera, na istom serveru (korištenjem reseller hosting naloga).
- Kloniranje mog biciklističkog sajta (kloniranje kao migracija sajta, ali uz promenu imena domena pri tome) na dva odvojena poddomena (poput test1.bikegremlin.com i test2.bikegremlin.com), svaki na poseban hosting nalog (kako je objašnjeno iznad).
- Isključivanje svih spoljašnjih resursa sa test sajtova (embedovani YouTube snimci, Google Analytics, Google AdSense i slično). Naravno, isključivanje indeksiranja (kako Gugl ne bi prijavio duplicirani sadržaj).
- U slučaju testiranja performansi servera, isključivanje svih keširanja (uključujući i Cloudflare).
Ako se testiraju plagini – ostavljanje svih keširanja, jer tako će sajt raditi i u produkciji. - Puštanje 20 GTmetrix testova za redom – istovremeno po jedan na svakom sajtu, u dva odvojena prozora browsera. Sa test servera najbližeg hosting serveru – kako bi se efekat eventualnog zagušenja mreže minimizovao. Osim ako se testira CDN – kada je poželjno testirati sa više različitih testnih lokacija.
Ažuriranje 17. novembra 2020: GTmetrix je promenio način testiranja i prikazivanja rezultata, i uveo ograničenje od 10 testova po danu. Moraću pronaći drugi alat za testiranje.
Isto takvo puštanje po dva load testa. Za to ću koristiti OctoPerf besplatni paket (koji nudi simulaciju do 50 istovremenih posetilaca).
4. Testiranje metoda testiranja
Jedan od autora The SEO Framework plagina tvrdi i objašnjava zašto ovakav test nije dovoljno precizan (link), nudeći drugačije preporuke. Preporuke se svode na sledeće:
- Korištenje plagina Query Monitor, koji može meriti vreme upita u bazi (između ostalog).
- Korištenje alata kao što je ab za test opterećenja.
Tvrdeći da testovi koji simuliraju otvaranje stranica posetilaca uvode puno nekotrolisanih faktora (poput kvaliteta mrežne konekcije, brzine renderovanja browser-a i sl.). Uz napomenu da SEO plagini toliko malo utiču na brzinu sajta da svaka nesavršenost u merenju dovodi do neupotrebljivih rezultata.
Kada je u pitanju testiranje WordPress plagina, ono što mene zanima je sledeće:
- Da li imaju bezbednosnih propusta (WPScan Vulnerability Database je dobar izvor za proveru toga).
- Da li prave problema u radu sajta (bela stranica smrti, narušen vizuelni izgled sajta, ili onemogućene željene funkcije).
- Da li se sajt brže, ili sporije učitava za posetioce (ili ostaje isti).
- Da li je opterećenje servera veće, manje, ili isto (kad se rade testovi opterećenja.
Tako da je prva stvar koju želim testirati: sam metod testiranja. 🙂 Planiram ovo uraditi testiranjem bez ikakvih promena. Testiranjem dve identične kopije sajta (osim drugog pod-domena). Nakon toga objaviću rezultate ovde, kako bih znao koliko je ovaj metod precizan. Sve preko 1% nije previše dobro, dok je sve preko 5% neprihvatljivo loše. Tako ću barem znati koliko je moj metod testiranja precizan – da li ga mogu smatrati pouzdanim, ili samo orijentacionim.
5. Rezultati testiranja metoda testiranja 🙂
OK, napravio sam dva klona sajta – potpuno identična i smestio ih na dva odvojena cPanel naloga, na istom serveru. Isključio sam na sajtovima sve analitike i AdSense reklame – kako ne bi uticali nasumično na rezultate testova.
Lokacija servera je u Londonu, a sa te lokacije su i testovi rađeni, kako bi se smanjio uticaj promena kvaliteta konekcije na rezultate.
5.1. GTmetrix testiranje
Onda sam prvo testirao sa alatom GTmetrix. Izabrao sam jednu nasumičnu stranicu (TP1 u buduće) sa prvog sajta (TS1 u buduće). Zatim sam na drugom testnom sajtu (TS2) izabrao istu tu stranicu (PG2). Tj. stranica je sa istim permalinkom i sadržajem, samo se pod-domeni testnih sajtova razlikuju (kao test1.bikegremlin.com i test2.bikegremlin.com).
Otvorio sam dva browser tab-a i, koliko je moguće istovremeno, pokretao testove na oba sajta. Ponavaljajući test po 20 puta za svaki sajt i zapisujući rezultate.
Onda sam to isto uradio za još jednu po stranicu (PG2) na oba sajta.
Konačno, treća “stranica” koju sam testirao (PG3) je u stvari bila kategorija koja sadrži 18 postova.
Evo dobijenih rezultata:
Dobijena su odstupanja u rezultatima merenja brzine učitavanja iste stranice na različitim sajtovima.
U procentima, TS2 je varirao od -1.11% bržeg, do 5.33% sporijeg (ukupno 6,44% odstupanja).
U apsolutnom vremenu učitavanja, variranje je od 0,01 sekundi brže, do 0,04 sekundi sporije (ukupno 0,05 sekundi odstupanja).
AVG T na slici 4 prikazuje prosečno vreme učitavanja za sve tri testirane stranice.
Na osnovu ovoga, zaključujem da merenjem ovim metodom mogu pouzdano izmeriti razlike samo ako su veće od 7%, ili/i 0,05 sekundi.
5.2. Octoperf testiranje
Napravio sam test pomoću alata Octoperf, kojim simuliram 30 posetilaca koji pregledaju sajt. 15 od njih “koristi” Chrome na Windows 10, dok je drugih 15 “koristi” Safari na Iphone 10.
Posetioci pregledaju 40 različitih stranica na sajtu, nasumično izabranih i stavljenih na spisak (neke su stranice, neke članci, neke kategorije). Čim se prva stranica završi sa učitavanjem, prelaze na narednu. Kada stignu do 19, kreću od početka, brišući keš svog browsera. Tako 10 minuta.
Pošto ljudi obično provedu barem sekund-dva na stranici, ovakav vid testiranja opterećuje server puno više nego što bi to uradili 30 pravih posetilaca. Pratio sam opterećenje hosting servera tokom testiranja:
Umereno, što je i bilo za očekivati (server hostuje stotine sajtova). Ovo su Octoperf test rezultati:
Razlika u brzini učitavanja između TS1 i TS2, u procentima je išla od 8,83% brže, do 4,62% sporije (ukupno 13,45% maksimalnog odstupanja).
U vremenu učitavanja, to je razlika od 0,06 sekundi brže, do 0,03 sekundi sporije (ukupno 0,09 sekundi odstupanja).
Tako da je moj zaključak da ovaj metod može pouzdano prikazati razlike samo ako su veće od 14% u procentima, ili 0,1 sekundi u apsolutnom vremenu učitavanja.
Koga zanima, ovo su detaljni rezultati Octoperf testova u .pdf formatu:
- TS1 – test 1 – / – TS2 – test 1
- TS1 – test 2 – / – TS2 – test 2
- TS1 – test 3 – / – TS2 – test 3
Ažuriranje 2021: kako bih testove napravio relevantnijim (“realnijim” ako želite), napravio sam novi test sajt (sajt namenjen testiranju i poređenju rezultata). Taj sajt ima stranicu kreiranu u Elementoru, malu WooCommerce e-prodavnicu, i preko 70 članaka. Novi test sajt nije kopija mog biciklističkog sajta. Otvaranje hosting naloga sa kreditnom karticom prijatelja, i korištenje novog testnog sajta, otežava hosting provajderu da vidi da ja radim testiranje. Ciljam na što veću objektivnost testova… a i bolje je kad prijatelji plaćaju za troškove hostinga! 🙂
Takođe, Octoperf testove sam ograničio na “svega” 30 istovremenih posetilaca – prvobitna verzija je bila sa 50 posetilaca. Ovi posetioci otvaraju svaku stranicu na sajtu, tako da otvaraju novu čim se prethodna stranica učita. Bez keširanja u svom browseru (kao skroz novi posetioci). Pošto ljudi obično provedu barem nekoliko sekundi na stranici i ne otvaraju baš sve stranice sajta jednu za drugom odmah, ovakva simulacija je otprilike ekvivalent poseti od oko 300 “pravih” posetilaca istovremeno (po mojoj proceni).
Ova simulacija je broju od oko 300.000 posetilaca mesečno (mada je moj test, dok se izvršava, puno stresniji – simulira nagli skok u broju poseta i zahteva).
Sve u svemu, test sam dizajnirao tako da može oznojati server, ali ne tako da ga sruši. Želim simulirati velik broj poseta, a ne DDOS napad.
6. Zaključak
Dobro je što sam izmerio koliko je (ne)precizan ovaj metod testiranja. Sad znam da, kada testiram dva različita hosting servera, WordPress plagina, ili različita podešavanja sajta, pa jedan od njih bude brži/sporiji za više od 0,1 sekundu, onda je verovatno to zaista i slučaj. Manje razlike su najverovatnije usled nesavršenosti mog metoda testiranja.
U procentima, za stranice koje se učitavaju za manje od jedne sekunde, to je nekih 15% greške u merenju. Nisam imao prilike testirati na sporijim stranicama, pošto se stranice na mom sajtu ne učitavaju dovoljno sporo, barem ne kada se eliminišu sve sa ubačenim YouTube snimcima i kada se izbace sve reklame i analitike. Da sam i to uključio, praktično bih merio Google i YouTube, a ne brzinu svojih sajtova.
Ovo ne znači da takav setap ne treba meriti. Samo znači da, kada se porede plagini, optimizacije, ili performanse hosting servera, uvođenje ovih “dodataka” može učiniti rezultate previše nasumičnim i neupotrebljivim. Pratim statistiku Google Analitike i proveravam stranice koje imaju dugačko prosečno vreme učitavanja. Ali za brzo testiranje i upoređivanje, uključivanje svih ovih eksernih resursa može smetati.
7. Dodatak: Testovi bez keširanja
Zahvaljujući dobrim povratnim informacijama (i ispravkama) od strane WebWhim tima (link ka njihovom sajtu), zaključio sam da je pametno dodati i testove na “golom metalu,” tj. testove koji zaobilaze keširanje, CDN-ove i slično. Ovo su alati koje koristim za to:
- PHP simple benchmark script (GitHub link)
BikeGremlin script file download copy (.zip fajl download) - WordPress Hosting Benchmark tool (wp. org link)
Takođe, odlučio sam da više ne koristim PHP/MySQL CPU performance statistics (wp.org link). Rezulatati testiranja brzine baze ovog plagina su dosta neprecizni (može se reći da navode na pogrešne zaključke).
Moje metode, znanje i iskustvo se menjaju vremenom, ali ovo uvek ostaje tačno: 🙂