WordPress pod kontrolou: Chyby, které nejčastěji zpomalují web

Majitel menšího firemního webu si jednou nechal změřit rychlost stránky. Výsledek vypadal, jako kdyby web načítal nejprve všechny obrázky, potom si uvařil kávu a teprve pak se rozhodl zobrazit nadpis. Přitom na něm nebylo nic exotického: běžná šablona, několik formulářů, galerie a více než třicet pluginů. Každý měl svůj důvod. Některé už si ho ovšem nepamatovaly.

WordPress se nezpomalí jen proto, že je WordPress. Většinou za tím stojí kombinace zastaralého prostředí, zbytečných doplňků, příliš těžkých obrázků a chybějící cache. Problém bývá záludný v tom, že web na počítači správce působí svižně. Ten už má část souborů uloženou v prohlížeči a často sedí na rychlém připojení. Návštěvník s mobilem a horším signálem dostane úplně jiný zážitek.

Pluginy, PHP a další nenápadné brzdy

Nejčastější chybou bývá přístup instalovat plugin na každý drobný úkol. Jeden přidá animaci, druhý počítadlo návštěv, třetí propojení s newsletterem a čtvrtý možná jednou zobrazí otevírací dobu v patičce. Samotný počet pluginů není jediná rozhodující veličina. Podstatné je, co dělají, jak často se spouštějí a zda se jejich funkce nepřekrývají.

Některé doplňky načítají vlastní JavaScript a styly na každé stránce, i když je potřebujete pouze v administraci nebo na jediné podstránce. Jiné pravidelně sahají do databáze, vytvářejí další dotazy nebo přidávají požadavky na externí služby. Web pak nebrzdí jeden dramatický viník, ale celá malá fronta softwarových pasažérů, z nichž každý tvrdí, že bez něj se nedá žít.

Nepotřebné pluginy proto nestačí jen deaktivovat. Pokud je už nepoužíváte, odstraňte je. U těch, které zůstávají, má smysl sledovat jejich dopad na výkon a ověřit, zda stejnou funkci neumí nabídnout šablona nebo jiný již používaný doplněk. Při úklidu postupujte opatrně a nejprve si vytvořte zálohu. Hrdinský zásah do produkčního webu bez možnosti návratu bývá disciplína s krátkou kariérou.

Podobně přehlížené je PHP. WordPress aktuálně doporučuje PHP 8.3 nebo novější. PHP 7.4 už představuje pouze starší variantu po ukončení podpory, takže provoz webu na této verzi není dobrý způsob, jak si zajistit rychlost ani bezpečnost. Novější PHP může zpracovávat požadavky efektivněji, ale přechod je třeba nejprve otestovat. Starší plugin nebo šablona nemusí změnu přijmout s nadšením a web může místo rychlejšího načítání nabídnout bílou obrazovku.

Před aktualizací PHP zkontrolujte kompatibilitu WordPressu, šablony a pluginů na testovacím prostředí. Pokud testovací prostředí nemáte, alespoň si ověřte zálohy a aktualizujte jednotlivé součásti řízeně. Automatické aktualizace všeho najednou připomínají situaci, kdy vyměníte motor, brzdy i volant a pak zkoušíte, která část způsobila, že auto nejede.

Velkou práci odvede také cache. Bez ní musí server opakovaně sestavovat stránky, které se přitom často vůbec nemění. Webserverová cache umí uložit hotový výsledek, aby ho nemusel znovu vyrábět při každé návštěvě. U dynamických webů mohou pomoci také Memcached a PHP OPcache. OPcache ukládá zkompilovaný PHP kód, takže server nemusí při každém požadavku začínat úplně od nuly.

Cache ale není kouzelná deka, pod kterou lze schovat špatně napsaný web. Po změně obsahu je třeba řešit její čištění a správné nastavení. Jinak návštěvník uvidí starou verzi stránky a správce bude několik minut přesvědčený, že internet osobně odmítá jeho úpravy.

Obrázky, JavaScript a měření skutečné rychlosti

Obrázky bývají největšími soubory na stránce. Problém nastane, když nahrajete fotografii z moderního telefonu v plném rozlišení a necháte ji zobrazit v náhledu širokém několik set pixelů. WordPress pak posílá návštěvníkovi soubor, který je pro dané použití zbytečně velký. Komprese, správné rozměry a vhodný formát dokážou udělat větší rozdíl než další efektní plugin s ikonou rakety.

Smysl má také moderní formát WebP, který obvykle nabízí menší velikost souborů než starší formáty při zachování dobré vizuální kvality. Neznamená to převést všechny obrázky bez kontroly. U fotografií je potřeba hlídat kompresi a u grafiky průhlednost i ostrost. Logo rozmazané jako vzpomínka po dlouhé noci rychlost webu nezachrání.

Pozornost si zaslouží hlavně obrázek nebo jiný prvek, který se objeví jako největší obsah v horní části stránky. Právě ten často ovlivňuje metriku LCP, tedy dobu načtení hlavního obsahu. Dobrá hodnota LCP je nejvýše 2,5 sekundy, zatímco nad 4 sekundy už jde o špatný výsledek. Hodnotí se přitom 75. percentil návštěv, takže nestačí, že web jednou bleskově otevřel správci v kanceláři.

Další brzdu představuje JavaScript. Chatovací okno, měření návštěvnosti, reklamní skripty, animace a různé integrace se mohou načítat současně. Každý jednotlivý skript může působit neškodně, dohromady ale zaměstnají prohlížeč natolik, že kliknutí reaguje se zpožděním. Dobrá hodnota INP je nejvýše 200 milisekund. Vyšší čísla signalizují potíže s interaktivitou, tedy například pomalé otevření nabídky nebo opožděnou reakci formuláře.

Skripty mohou způsobit i poskakování stránky. Když se reklama, obrázek nebo vložený prvek načte až po okolním textu a nemá předem vyhrazené místo, obsah se posune. Čtenář pak klikne na tlačítko a v témže okamžiku se mu pod prstem objeví něco jiného. Metrika CLS sleduje právě tuto nestabilitu layoutu; dobrý výsledek je nejvýše 0,1. Rezervované rozměry obrázků, reklamních ploch a vložených prvků působí nenápadně, ale dokážou podobné skoky výrazně omezit.

Při hledání problému se vyplatí měřit jednotlivé změny, ne jen jednou za čas spustit test a obdivovat barevný výsledek. Nejprve můžete zkontrolovat velikost obrázků, potom vypnout podezřelý plugin na testovací kopii a následně porovnat načítání. Stejně tak má smysl sledovat web na mobilu, protože právě tam se přebytečné skripty a těžké soubory projeví nejdřív. Rychlý WordPress není dílem jedné zázračné úpravy, ale výsledkem několika nudných rozhodnutí, která se na obrazovce tváří překvapivě dobře.