Modul 6 · 6.3
Slike, PHP in druge izboljšave hitrosti
Modul 6: Hitrost · Čas branja: 9 minut
Učni cilj: Po tej lekciji boste znali uporabiti preostale največje izboljšave hitrosti in izmeriti njihov učinek.
Ključni pojmi: optimizacija slik, WebP in AVIF, leno nalaganje (lazy loading), slika LCP, fetchpriority, različica PHP, čiščenje baze podatkov (revizije, transients, autoload), WP-Cron, pravi cron, DISABLE_WP_CRON, zunanje pisave, Heartbeat
Delajte v pravilnem vrstnem redu
Po predpomnilniku strani (lekcija 6.2) so to izboljšave, ki prinesejo največ, približno po vrstnem redu truda glede na učinek:
- urejene slike;
- posodobljena različica PHP;
- manj zunanjih elementov in težkih vtičnikov;
- počiščena baza podatkov;
- načrtovana opravila na pravem cronu.
Merite pred in po vsakem koraku (lekcija 6.1), sicer ne boste vedeli, kaj je pomagalo. In delajte eno stvar naenkrat.
Slike: največja izboljšava v brskalniku
Na večini strani so slike največji delež tega, kar obiskovalec prenese. To, kar ste se naučili v lekciji 4.4, se tukaj obrestuje:
- Pravilna velikost: ne nalagajte slik, večjih od potrebnega, in prepustite WordPressu, da prek srcset ponudi manjše različice.
- Stiskanje in format: WebP je pri enaki kakovosti običajno precej manjši od JPEG; AVIF je pogosto še manjši. Vtičnik lahko obstoječe slike pretvori in manjšo različico ponudi brskalnikom, ki jo podpirajo. Preverite, ali se pretvorba izvaja na Vašem lastnem strežniku ali pri zunanji storitvi.
- Leno nalaganje (lazy loading), vendar ne za vse. WordPress slikam samodejno doda
loading="lazy", razen prvi veliki sliki na vrhu strani. Ta slika je pogosto element LCP (lekcija 6.1): največji del vsebine, ki ga obiskovalec vidi prvi. Če se ta slika nalaga leno, brskalnik čaka z nalaganjem in Vaš LCP se poslabša. Zato WordPress kandidatu za LCP pogosto dodafetchpriority="high", da jo brskalnik prenese prvo.
<img src="hero-1536x864.webp" width="1536" height="864"
fetchpriority="high" alt="Delavnica s kolesi v vrsti">
<img src="team-768x512.webp" width="768" height="512"
loading="lazy" alt="Ekipa pred trgovino">Past: nekatere teme, orodja za izdelavo strani in optimizacijski vtičniki leno nalaganje uporabijo tudi za prvo sliko ali veliko sliko naložijo kot ozadje prek CSS (kar se odkrije šele pozneje). V orodju PageSpeed Insights pri elementu LCP vidite, kateri element je to in ali se nalaga leno.
PHP: brezplačna hitrost
Vsaka nova glavna različica PHP je hitrejša od prejšnje, spletna mesta WordPress pa to korist pridobijo neposredno, brez kakršnih koli sprememb na Vašem spletnem mestu. Poleg tega stare različice ne prejemajo več varnostnih posodobitev (lekcija 8.4). Če preklapljate, preverite, ali Vaši vtičniki in tema podpirajo novo različico, in to najprej storite v testnem okolju (staging).
Pri nastavitvah PHP bodite pozorni tudi na:
- OPcache: pri večini ponudnikov gostovanja je privzeto vklopljen. Posledica: spremenjena datoteka PHP lahko traja nekaj časa, preden PHP uporabi novo različico.
- memory_limit: prenizka vrednost povzroči napake pri zahtevnih straneh; zelo visoka vrednost spletnega mesta ne pohitri.
Zunanji elementi in težki vtičniki
Vsak element druge stranke pomeni dodatno povezavo in dodaten čas čakanja: pisave zunanje storitve, vdelan video, klepetalni pripomoček, merilne kode, gumbi za družbena omrežja, zemljevid. Vprašanja za vsak element:
- Ali je potreben? Video, ki ga skoraj nihče ne predvaja, je lahko tudi slika s povezavo.
- Ali je mogoč lokalno? Pisave lahko večinoma namestite na svoj lastni strežnik (z vtičnikom ali prek theme.json pri temi z bloki). To prihrani eno povezavo in je bolje za zasebnost (lekcija 9.3).
- Ali je mogoč pozneje? Klepetalni pripomoček ali video se lahko naloži šele po kliku.
Pri vtičnikih pomaga merjenje z X-Ray (pri gostovanju s CloudLinux) ali z vtičnikom, kot je Query Monitor (začasno vklopite, viden samo skrbnikom). Ti pokažejo, kateri vtičnik porabi največ poizvedb v bazo podatkov ali časa.
Čiščenje baze podatkov
Baza podatkov raste zaradi stvari, ki jih ne vidite:
- Revizije (lekcija 4.1): vsaka shranjena različica vsake strani. Omejite jih z
WP_POST_REVISIONSin počistite stare. - Neželeni komentarji in komentarji v košu ter prispevki v košu.
- Transients: začasni podatki vtičnikov v
wp_options, ki jih včasih nihče ne počisti. - Autoload: možnosti v
wp_optionsz vklopljenimautoloadse naložijo naenkrat pri vsaki zahtevi. Vtičniki, ki ste jih že zdavnaj odstranili, tam včasih pustijo velike količine podatkov. Zdravje spletišča (lekcija 5.4) opozori, če so podatki autoload zelo veliki. - Dnevniške tabele vtičnikov (statistika, varnostni dnevniki, dnevniki e-pošte), ki se nikoli ne izpraznijo.
Čiščenje je mogoče z vtičnikom za čiščenje, z WP-CLI (wp transient delete --expired, wp post delete $(wp post list --post_type=revision --format=ids) --force) ali s funkcijo za optimizacijo tabel v phpMyAdmin. Vedno najprej naredite varnostno kopijo. Ne odstranjujte ničesar, za kar ne veste, kaj je.
Načrtovana opravila: WP-Cron
WordPress ima opravila, ki se morajo izvesti ob določenem času: objava načrtovanega prispevka, preverjanje posodobitev, delovanje vtičnika za varnostno kopiranje. Temu pravimo WP-Cron. Privzeto WP-Cron ne teče po uri, temveč ob obisku: pri vsaki zahtevi za stran WordPress preveri, ali je kakšno opravilo pripravljeno. Dve slabosti:
- Pri malo obiskovalcih se opravila izvedejo prepozno (načrtovan prispevek se prikaže šele ob naslednjem obisku).
- Pri veliko obiskovalcih se preverjanje izvaja zelo pogosto, zahtevno opravilo pa lahko ravno takrat upočasni stran obiskovalca.
Bolje: izklopite WP-Cron ob obiskih in prepustite pravemu cron opravilu strežnika, da ga izvaja vsakih pet ali deset minut. V wp-config.php (nad »stop z urejanjem«):
define( 'DISABLE_WP_CRON', true );In na zaslonu za cron v Vaši nadzorni plošči gostovanja nastavite opravilo vsakih 10 minut:
*/10 * * * * /usr/local/bin/php /home/gebruiker/domains/example.com/public_html/wp-cron.php >/dev/null 2>&1Pot do PHP in do Vašega spletnega mesta se razlikuje glede na ponudnika gostovanja; preverite v navodilih Vaše nadzorne plošče. Lahko tudi uporabite WP-CLI: wp cron event run --due-now. Naknadno v orodju Zdravje spletišča preverite, da nobeno načrtovano opravilo ne zaostaja.
Heartbeat in skrbništvo
Nadzorna plošča WordPressa, dokler je odprta, vsakih 15 do 60 sekund komunicira s strežnikom (Heartbeat): za samodejno shranjevanje, da sporoči, da nekdo drug ureja isti prispevek, in za obvestila. Če imate ves dan odprtih deset zavihkov z nadzorno ploščo, to pomeni na tisoče zahtev. Zaprite zavihke, ki jih ne uporabljate. Nekateri vtičniki za predpomnjenje lahko upočasnijo Heartbeat; popolna izklopitev ni potrebna in prekine samodejno shranjevanje.
Povzetek
- Po predpomnilniku strani: slike, različica PHP, zunanji elementi in vtičniki, baza podatkov, cron. Merite pred in po, en korak naenkrat.
- Leno nalaganje za vse razen velike slike na vrhu; ta naj raje dobi
fetchpriority="high". - Novejša različica PHP je brezplačna hitrost, če jo Vaši vtičniki podpirajo.
- Počistite revizije, transients, neželeno vsebino in velike podatke autoload, vedno z varnostno kopijo.
- Nastavite WP-Cron na pravo cron opravilo z
DISABLE_WP_CRONin opravilom v Vaši nadzorni plošči.
Kviz
Naloga
Naloga A6.3: Leno nalaganje in formati na domači strani. Vnesite naslov Vašega spletnega mesta. Program prebere domačo stran in preveri slike: ali prva velika slika nima loading="lazy" (in ima po možnosti fetchpriority="high"), ali imajo poznejše slike leno nalaganje, in kolikšen delež slik je v formatu WebP ali AVIF?
Naloga D6.3: Pred in po. Izmerite stran Vašega spletnega mesta trikrat v orodju PageSpeed Insights (mobilno) in zabeležite srednjo vrednost LCP, INP (ali laboratorijsko vrednost Total Blocking Time, če ni podatkov s terena), CLS in TTFB iz naloge A6.1. Nato izvedite eno izboljšavo iz te lekcije (slike, različica PHP, odstranitev zunanjega elementa, čiščenje baze podatkov ali pravi cron). Ponovno izmerite trikrat in zabeležite nove vrednosti. Opišite, kaj ste naredili in ali je razlika večja od običajnega nihanja med meritvami.
Naloga D6.3: Pred in po
To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.
Izpolnjenih šest meritev, izvedena ena izboljšava iz lekcije (slike, predpomnilnik, različica PHP, manj vtičnikov ali zunanjih skript) in zaključek, ki omenja nihanje: razlika, manjša od razpršenosti med Vašimi meritvami, pove malo.
Vaše kljukice in zapiski ostanejo samo v tem brskalniku, nikamor jih ne pošiljamo. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo opravili.
Dodatno branje
Ti članki opisujejo korake v nadzornih ploščah WebOké; v drugih nadzornih ploščah delujejo podobno.
- Priročnik DirectAdmin 14.1: Izbira različice PHP (Select PHP version)
- Priročnik DirectAdmin 12.7: Preverjanje, servisiranje in optimizacija podatkovne zbirke
- Priročnik DirectAdmin 15.1: Cronjob opravila: samodejno izvajanje opravil
- Ustvarjanje opravila cron (in kaj storiti, če se ne izvede)
- Priročnik DirectAdmin 17.4: X-Ray: odkrivanje počasnih strani
- Povezava WP-Cron s sistemskim cronom (developer.wordpress.org, Angleško): https://developer.wordpress.org/plugins/cron/hooking-wp-cron-into-the-system-task-scheduler/
- Leno nalaganje in LCP (web.dev, Angleško): https://web.dev/articles/lcp-lazy-loading
