Jak bylo náročné zrychlit WordPress
Pomalu se blížíme ke konci mého martyria s WordPressem, jedna z posledních věcí co jsem tak trošku řešil je zrychlení webu. Né, že by mi šlo o nějaký superspeed, nezačínal jsem s hodnotami 40s na načtení stránky jako jiní, ale chtěl jsem aby se web zalíbil i robotům, kteří si na takovéto věci potrpí.
Nechtěl jsem zrovna hned sahat po všude vychvalovaném W3 Total Cache, tak jsem zkoušel výsledků dosáhnout nějakými zásahy do .htaccess a podobně, ale nemělo to velkého významu. Zkusil jsem tedy asi dva pluginy, které říkají, že jsou jednoduché, easy & lightweight, protože komplexicita W3TC mě trochu děsila, ale W3TC má holt viditelné výsledky.
Konfigurace je peklo, naštěstí je po internetu spousta zaručených a nejlepších nastavení, ze kterých si to chce metodou pokus omyl udělat nějaký průměr a na polovinu si prostě přijít sám.
Například přímo návod od autorů šablony Hueman Speed up the Hueman Theme : how to setup W3 Total Cache Plugin je k ničemu a jen rozbije web :/
Takže jsem naklikal co jsem uznal za vhodné a zbytek musel pořešit ručně přidáním do functions.php nene, když se to napíše sem jak se všude píše, tak o změny příjdeme s první aktualizací šablony – a že Hueman aktualizují docela často! Dal jsem to tedy do kódu mého vlastního pluginu, o tom ale zase někdy jindy.
Nemohl jsem se zbavit chyby s „Query strings“, na to zabralo tedy toto:
/* Remove query strings from static resources */ function _remove_script_version( $src ){ $parts = explode( '?ver', $src ); return $parts[0]; } add_filter( 'script_loader_src', '_remove_script_version', 15, 1 ); add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );
Kromě W3TC ještě budou hubovat kvůli optimalizaci obrázků, na to mám WP Smush a docela to jde.
Aktuálně jsem tedy na těchto hodnotách, a největší neplechu dělají obrázky gravatarů v komentářích, ale i s tím by se mělo dát dle Why You Should Be Using Locally Hosted Gravatars něco udělat!
Po odstranění gravatarů jsem na GTMetrix 95%/87%, na PageSpeed 89/100 a Pingdom 98%!
Dokonalosti brání podle některých nástrojů málo optimalizované obrázky (že by prý šly zmenšit třeba o 1%), dále vadí načítání JavaScriptů a CSS v hlavičce, prý to blokuje načítání webu, a JS pro Google Analytics se nenačítá do mezipaměti, či co..
No a to ještě stále není konec, přišel jsem na to že W3 Total Cache je, dle testu, celkem brutálně nekompatibilní s PHP7, zatímco jiné nástroje jsou na tom lépe. Při všem tom hledání jsem narazil i na opačné názory na letitý a obtížně udržovaný moloch jménem W3 Total Cache (podobně jako Yoast SEO) s nějakými těmi bezpečnostními slabinami.
Narazil jsem tak například na fork W3TC na githubu Fix W3TC (W3 Total Cache), vypadá to dobře, ale autoři udělali jednu velkou chybu – plugin se jmenuje stejně jako W3TC a pokud si ho nainstalujeme do WP, tak se bude pořád chtít aktualizovat na oficiální W3TC.
Začal jsem si tedy hrát s WP Super Cache + Autoptimize + ruční pravidla do .htaccess + něco málo v rámci vlastního pluginu. Velikost stránky se záhadně zvedla asi o 100kB, ale skóre se ještě zvedlo! GTMetrix 97%/89%, na PageSpeed 90/100 a Pingdom 98%! – Už to nebudu dál hrotit a raději zapomenu na to, že se to dá ještě ladit, nebo nebudu dělat nic jiného.
EDIT: Teď jsem náhodou narazil na krásný všeshrnující článek: Google PageSpeed Insights – Scoring 100/100 with WordPress.