Proč je váš WooCommerce pomalý (a není to hostingem)
Pomalý e-shop se často řeší dražším serverem. Profilování ale obvykle ukáže, že problém je v kódu a pluginech, ne v hardwaru.
Když se e-shop na WooCommerce začne načítat několik sekund, první nápad bývá přejít na silnější hosting. Někdy to pomůže. Častěji jen zaplatíte víc a problém zůstane, protože server dělá zbytečnou práci rychleji.
Nejdřív měřit
Než cokoli měním, pustím profiler. Na serverech s Pleskem je nastavení nástroje jako xhprof trochu pracnější, protože každá verze PHP žije odděleně, ale vyplatí se. Po pár požadavcích je vidět, kde přesně se tráví čas, a hádání končí.
Co obvykle najdu
- Přegenerovávání pravidel pro adresy (rewrite rules) při každém požadavku. Typicky kvůli pluginu, který je volá na špatném místě. Na každé stránce se tak dělá práce, která má proběhnout jednou.
- Page builder, který si znovu skládá CSS. Elementor a podobné nástroje umějí styly cachovat, ale když se cache neustále zneplatňuje, generují se pořád dokola.
- Dotazy N+1. Pluginy na více skladů a na více jazyků v kombinaci rády posílají do databáze dotaz pro každý produkt zvlášť. Na výpisu kategorie jich pak jsou stovky.
- Chybějící perzistentní objektová cache. Bez Redisu nebo Memcached se stejná data z databáze načítají znovu při každém požadavku.
Jak to opravit
Každá z těchhle věcí má poměrně přímočaré řešení: přesunout volání na správné místo, opravit zneplatňování cache, dávkovat dotazy a zapnout objektovou cache. Dohromady to často udělá větší rozdíl než nový server.
A když už jsme u serveru
Při jedné takové opravě se ukázalo, že server běží na systému, který už nemá podporu, a instalace balíčků padá. Na starém Debianu se to dá dočasně vyřešit přesměrováním na archivní repozitáře. Je to ale jen záplata. Server bez bezpečnostních aktualizací je dluh, který jednou zaplatíte.
Rychlý e-shop není otázka hrubé síly. Je to otázka toho, jestli server nedělá práci, kterou dělat nemusí.