WordPressin admin-suorituskyky kokonaisuutena
WordPressin hallintapaneeli on monelle sivustolle kriittisin käyttöliittymä. Kun admin hidastuu, koko työ pysähtyy: sisällöntuotanto takkuaa, ylläpito turhauttaa ja virheiden määrä kasvaa. Admin-suorituskyky on kuitenkin usein huonompi kuin frontend, koska sitä ei ole suunniteltu skaalautuvaksi käyttöliittymäksi samalla tavalla.
- WordPressin admin-suorituskyky kokonaisuutena
WordPressin hallintapaneeli on monelle sivustolle kriittisin käyttöliittymä. Kun admin hidastuu, koko työ pysähtyy: sisällöntuotanto takkuaa, ylläpito turhauttaa ja virheiden määrä kasvaa. Admin-suorituskyky on kuitenkin usein huonompi kuin frontend, koska sitä ei ole suunniteltu skaalautuvaksi käyttöliittymäksi samalla tavalla....
- Miksi WordPress-admin hidastuu
Toisin kuin frontend:...
- Admin ajetaan aina PHP:llä
Toisin kuin frontend:...
- Admin lataa paljon enemmän kuin näyttää
Yksi admin-sivu voi:...
- Yleisimmät pullonkaulat adminissa
Adminissa:...
- Liialliset hookit
Adminissa:...
- wp_options-taulu
Admin lukee wp_options-taulua jatkuvasti. Ongelmia syntyy, kun:...
- Autoload ei ole ilmainen
Autoload-optioita:...
- JavaScript ja admin-käyttöliittymä
Adminin JS-ongelmat syntyvät usein siitä, että:...
- Globaalisti ladattu JS
Adminin JS-ongelmat syntyvät usein siitä, että:...
- Gutenberg ei ole ainoa syyllinen
Block editor saa usein syyt, mutta:...
- AJAX ja REST adminissa
Admin käyttää AJAXia ja RESTiä laajasti. Ongelmia syntyy, kun:...
- Jokainen pyyntö maksaa
Admin käyttää AJAXia ja RESTiä laajasti. Ongelmia syntyy, kun:...
- Pollaus vs. tapahtumat
Moni admin-näkymä:...
- Tietokantapullonkaulat
Admin-näkymät voivat:...
- Adminin kyselyt eivät ole viattomia
Admin-näkymät voivat:...
- Metadatan ylikuormitus
Postmeta ja usermeta:...
- Ratkaisut admin-suorituskykyyn
Raskas logiikka tulee:...
- Aja koodi vain oikeassa kontekstissa
Raskas logiikka tulee:...
- Siivoa wp_options
Säännöllinen siivous:...
- Optimoi listanäkymät
Admin-listoissa:...
- Välimuisti adminissa
Vaikka HTTP-cache ei toimi adminissa:...
- Object cache auttaa adminiakin
Vaikka HTTP-cache ei toimi adminissa:...
- Seuranta ja mittaus
Hyviä työkaluja ovat:...
- Adminin suorituskykyä voi mitata
Hyviä työkaluja ovat:...
- Milloin admin on “riittävän nopea”
Admin on onnistunut, kun:...
- Lopuksi: Admin on työväline, ei demo
WordPressin admin-suorituskyky ei parane yhdellä tempulla. Se paranee:...
- Aiheeseen sopivia artikkeleita
Admin ei ole vain näkymä. Se on kasa synkronisia pyyntöjä, koukkuja ja lisäosia, jotka kilpailevat jokaisesta millisekunnista.
Miksi WordPress-admin hidastuu
Admin ajetaan aina PHP:llä
Toisin kuin frontend:
-
adminia ei yleensä cacheta HTTP-tasolla
-
lähes jokainen sivu on käyttäjäkohtainen
-
jokainen klikkaus tarkoittaa PHP:n ajoa
Tämä tekee administa erityisen herkän pienillekin tehottomuuksille.
Admin lataa paljon enemmän kuin näyttää
Yksi admin-sivu voi:
-
suorittaa kymmeniä hookeja
-
ajaa useita WP_Query-kyselyitä
-
ladata JS- ja CSS-paketteja globaalisti
Moni lisäosa lisää logiikkaa adminiin “varmuuden vuoksi”, vaikka sitä ei tarvita kyseisellä sivulla.
Yleisimmät pullonkaulat adminissa
Liialliset hookit
Adminissa:
-
admin_init -
init -
current_screen
ovat usein ylikuormitettuja. Kun raskas logiikka ajetaan jokaisella admin-pyynnöllä, hidastuminen kertautuu nopeasti.
wp_options-taulu
Admin lukee wp_options-taulua jatkuvasti. Ongelmia syntyy, kun:
-
taulu kasvaa hallitsemattomasti
-
autoload-optioita on liikaa
-
tilapäistä dataa ei poisteta
Yksi paisunut options-taulu vaikuttaa kaikkiin admin-sivuihin.
Autoload ei ole ilmainen
Autoload-optioita:
-
ladataan jokaisella pyynnöllä
-
ei voi ohittaa helposti
-
käytetään usein väärin
Moni lisäosa tallentaa suuria rakenteita autoloadina, vaikka niitä tarvitaan vain tietyssä näkymässä.
JavaScript ja admin-käyttöliittymä
Globaalisti ladattu JS
Adminin JS-ongelmat syntyvät usein siitä, että:
-
skriptejä ladataan kaikille sivuille
-
riippuvuudet ovat raskaita
-
buildit ovat vanhentuneita
Yksi raskas React-pohjainen näkymä voi hidastaa koko adminia, jos se ladataan globaalisti.
Gutenberg ei ole ainoa syyllinen
Block editor saa usein syyt, mutta:
-
monet ongelmat ovat custom-lisäosissa
-
vanhat kirjastot kuormittavat selainta
-
tapahtumakuuntelijoita kertyy
Adminin frontend on yhtä haavoittuva kuin julkinen frontend.
AJAX ja REST adminissa
Jokainen pyyntö maksaa
Admin käyttää AJAXia ja RESTiä laajasti. Ongelmia syntyy, kun:
-
endpointit palauttavat liikaa dataa
-
kutsuja tehdään liian usein
-
vasteaika on korkea
Hidas REST endpoint näkyy suoraan adminin tahmeutena.
Pollaus vs. tapahtumat
Moni admin-näkymä:
-
pollaa palvelinta jatkuvasti
-
ei rajoita kutsuja
-
ei käytä välimuistia
Tämä kuormittaa sekä selainta että backendia turhaan.
Tietokantapullonkaulat
Adminin kyselyt eivät ole viattomia
Admin-näkymät voivat:
-
listata tuhansia rivejä
-
tehdä COUNT-kyselyitä
-
käyttää monimutkaisia JOINeja
Ilman indeksejä ja rajoituksia admin-sivut hidastuvat eksponentiaalisesti.
Metadatan ylikuormitus
Postmeta ja usermeta:
-
kasvavat nopeasti
-
sisältävät epäyhtenäistä dataa
-
hidastavat listanäkymiä
Admin kärsii tästä ensimmäisenä.
Ratkaisut admin-suorituskykyyn
Aja koodi vain oikeassa kontekstissa
Raskas logiikka tulee:
-
sitoa tiettyyn admin-sivuun
-
estää ajautumasta globaaliksi
-
erottaa frontendistä
Yksi if-lause voi säästää satoja millisekunteja.
Siivoa wp_options
Säännöllinen siivous:
-
vähentää autoload-dataa
-
parantaa kaikkia pyyntöjä
-
vakauttaa adminin
Admin-suorituskyky paranee usein ilman koodimuutoksia.
Optimoi listanäkymät
Admin-listoissa:
-
rajoita oletusmäärät
-
poista turhat sarakkeet
-
vältä raskaita laskentoja
Kaikki data ei kuulu näkyville kerralla.
Välimuisti adminissa
Object cache auttaa adminiakin
Vaikka HTTP-cache ei toimi adminissa:
-
object cache toimii
-
transients vähentävät kyselyitä
-
toistuvat laskennat voidaan välttää
Admin ei ole cache-vapaa alue.
Seuranta ja mittaus
Adminin suorituskykyä voi mitata
Hyviä työkaluja ovat:
-
Query Monitor
-
selaimen performance-työkalut
-
PHP slow log
Ilman mittausta optimointi on arvailua.
Milloin admin on “riittävän nopea”
Admin on onnistunut, kun:
-
sivut latautuvat ennustettavasti
-
viive ei vaihtele hallitsemattomasti
-
raskaat toiminnot on erotettu taustatöiksi
Admin ei koskaan ole yhtä nopea kuin frontend, mutta sen ei tarvitsekaan olla tuskallisen hidas.
Lopuksi: Admin on työväline, ei demo
WordPressin admin-suorituskyky ei parane yhdellä tempulla. Se paranee:
-
karsimalla
-
rajaamalla
-
mittaamalla
Kun admin nähdään tuotantotyökaluna eikä vain käyttöliittymänä, sen suorituskykyyn aletaan suhtautua vakavasti. Ja silloin myös käyttäjät kiittävät.
