Materiály z mé přednášky na 7. WP konferenci na Hluboké o ladění výkonu webových aplikací.

 
Přednáška se zabývá následujícími tématy:
  • Nejrychlejší cesta ke zvýšení rychlosti pomocí cloudových služeb
  • Optimalizace obrázků (správné formáty, rozměry, alfa kanál v 8bit PNG, CSS sprites)
  • Optimalizace CSS a JS - minifikace a slučování
  • Stránková cache - WP SuperCache
  • Hledání problému pomocí GTmetrix a WebPageTest
  • Nejčastější problémy při načítání zdrojů (Expires, Gzip, KeepAlive)
  • Optimalizace načítání pomocí HTTP/2
  • Co ve WordPress brzdí TTFB
  • Vliv pluginů na výkon
  • Detekce problematickéhp pluginu pomocí P3 Profiler
  • Možnosti nástroje Query Monitor
  • Serverová infrastruktura
  • Monitoring
  • Vliv verze PHP na výkon
  • OpCode Cache
  • Object Cache
  • Náhrada HTTP serveru
  • Vliv AllowOverride None (zákaz .htaccess)
  • Nginx micro cache (nástin možnosti řešení výjimek - mimo přednášku)
  • Nástroj BlackFire pro profilování výkonu aplikací
  • Ukázka problémů - gettext, rekurze shortkódů, nevhodné nastavení serveru
  • Debugování pomocí Xdebug - krokování, profilace, trace

Pro testy výkonu bylo použito VPS, které nám zdarma pro tyto účely poskytnul sponzor konference - WEDOS.

Doplňující článek k tématu: https://lynt.cz/blog/optimalizace-vykonu-webovych-aplikaci-na-co-se-zamerit

Zajímavé otázky po konferenci:

Proč nebyl zmíněn plugin WP-Optimize, který optimalizuje databázi?

Pro mě osobně nepřináší žádnou zajímavou funkcionalitu.

Plugin je navržen, aby prováděl především 2 věci:

 

  • automaticky maže staré revize příspěvků, vysypává koš, maže neschávlené a spamové komentáře, maže transientní proměnné WP, pingbacky a trackbacky,
  • provádí nad databází příkaz OPTIMIZE TABLE.

Automatické mazání revizí a koše umí WordPress sám o sobě - stačí nastavit příslušné konstanty ve wp-config.php (viz pár tipů v http://lynt.cz/blog/checklist-wordpress-migrace-do-produkce). Spamové komentáře by měl zastavit antispamový plugin a transientní proměnné by se měly postupně odmazat samy (případně tomu lze pomoci jednoduchým SQL dotazem), při použití ObjectCache nejsou navíc tyto proměnné ukládány do databáze.

Předpokládám, že se dnes používá již téměř výhradně databázový engine InnoDB, ve kterém OPTIMIZE TABLE přímo není a podobná optimalizace nemá rozhodně takový význam jako u starého MyISAM, kde mazáním záznamů docházelo k velké fragmentaci a optimalizace mohla přinést velký výkonností zisk. V InnoDB se tento příkaz převádí na znovuvytvoření tabulky a indexů, což může ušetřit trochu místa na disku, ale vliv na výkon je u běžných databází velmi malý a znovuvytvoření může také trvat poměrně dlouho.

 

Přednášíš často o bezpečnosti a doporučuješ bezpečnostní pluginy, mají vliv na výkon?

Bezpečnostní pluginy samozřejmě vliv na výkon mají, nejvíce ho většinou padne na logování všeho co se děje, což na webech s větším provozem může být nezanedbatelné. Nasazením bezpečnostního pluginu však často dochází k tomu, že zablokují mnoho robotů a tím i často serveru velmi odlehčí.

Sami však bezpečnostní pluginy příliš nepoužíváme, protože se nám podařilo většinu jejich funkcionality implementovat již ze strany severu - fail2ban je dobrý pomocník.

 

Proč tak často haníš Slider Revolution?

Jsem obecně odpůrce sliderů, protože většinou jsou použity naprosto zbytečně. Konkrétně Slider revolution je velmi složitý plugin s propracovaným rozhraním pro uživatele. Nicméně jak často ho uživatel upravuje? Často se v něm nakliká slider při spouštění webu a pak už se nikdy nepoužije, v těchto případech mi jeho použití přijde naprosto zbytečné. Když už bych takový slider dělal, tak bych ho vytvořil asi nativně v JavaScriptu bez administrace, která by celý web jen zdržovala.

Z testů výkonu v přednášce je vidět, že plugin není příliš dobře napsaný a často nepoužívá možností WP, které lze optimalizovat například pomocí ObjectCache. Nepříliš dobrou kvalitu dokládá i fakt, že v něm bylo v minulosti nalezeno několik velmi závažných bezpečnostních děr.

 

Na lynt.cz máte také slider :-)

Ano, to je pravda :-)

Náš slider je také především designový prvek, ale má jasně daný účel, v rychlosti představuje 3 základní typy služeb co poskytujeme - síťovou infrastrukturu, webové aplikace a online marketing. Každá sekce má svou barvu, která odpovídá i barvám našeho loga, které by mělo říkat, že když máte dobře zvládnuté všechny tyto oblasti, tak vám firma bude šlapat jako dobře namazaný stroj. Tyto barvy vás pak provází celým webem - marketingová sekce je žluto oranžová atd. Slider na hlavní stránce je také zároveň rozcestníkem - ouška jsou viditelná stále a lze se z nich dostat do příslušné sekce, tam vás ostatně zavede i odkaz přímo z konkrétního slidu.

My jsme si svůj slider odůvodnili :-) Odůvodnění u sliderů bez aktivních odkazů, které jsou jen rychle ujíždějící obrázky, kde se lze těžko vrátit zpět, se ale hledá velmi špatně.

 

Materiály ke kurzu