Všechny hostingové společnosti mají obecnou politiku poslat varování, když zátěž webu na CPU přesáhne určitou hranici. Toto varování může v případě, že nepodniknete žádné kroky k nápravě, vyústit až v odpojení webu z hostingu.
V tomto článku se podíváme na Heartbeat API, jak ovlivňuje zátěž serveru a jak jej omezit.
Co je to WordPress Heartbeat API
WordPress Heartbeat je API služba, která byla představena ve WordPress 3.6. Jak jméno napovídá (heartbeat = tlukot srdce), jedná se o “opakované pulzy” pro provádění pravidelných úkolů. To pomáhá prohlížeči s pomocí ajaxových volání získávat aktuální informace ze serveru a poskytuje okamžité informace na WordPress nástěnce.
Praktické použití Heartbeat API
Heartbeat API provádí pravidelné úkoly a poskytuje aktuální informace a také neustále v administraci synchronizuje data ze serveru.
Pár příkladu využití:
- Pravidelné vytváření automatických konceptů a automatického ukládání při tvorbě příspěvku/stránky.
- Aktuální data prodejů v administraci při použití ecommerce pluginů.
- Zobrazení notifikací v administraci WordPress.
- Zamčení obsahu při aktuální editaci jiného uživatele.
Proč to vše může být problém?
Vše sice zní hezky a pomáhá poskytovat neustále aktuální informace, ale problém je, že Heartbeat API posílá ajaxové požadavky na server za pomoci “/wp-admin/admin-ajax.php“. To pak může poslat velké množství požadavků na server a zahltit tak CPU. A protože zdroje serveru jsou omezeny (především na sdíleném hostingu), tak to může způsobit odstavení webu.
Jak monitorovat Heartbeat API?
Obvykle není možné pro uživatele kontrolovat statistiky serveru. Jinak by to bylo jednoduché, stačílo by se podívat do statistik serveru a zobrazit zátěž z admin-ajax.php.
Protože kontrola v reálném čase není možná, můžete zkontrolovat nastavení hostingu, zda neobsahuje nějaké statistiky a případně se do nich podívat, nebo můžete napsat na podporu a zeptat se, zda váš WordPress web nepřetěžuje CPU serveru.
Hostiny také často nabízí Awstat (například Český hosting), který může monitorovat běh webu. Pokud u něj vidíte /wp-admin/admin-ajax.php na přední pozici, tak je možné, že spotřebovává větší množství zdrojů.
Jak omezit Heartbeat API
V oficiálním katalogu pluginů se nachází Heartbeat Control plugin. Nainstalovat jej můžete přímo přes WordPress administraci.
Jeho nastavení najdete v sekci Nastavení → Heartbeat Control.
Nastavení pluginu obsahuje tři základní položky, kde lze upravovat chování Heartbeat API:
- WordPress Dashboard – WordPress administrace.
- Frontend – část webu, kterou vidí návštěvník.
- Post editor – editor obsahu.
Pro každou položku je dostupné nastavení:
- Allow Heartbeat – povolit Heartbeat.
- Disable Heartbeat – vypnout Heartbeat.
- Modify Heartbeat – upravit Heartbeat, při aktivaci se zobrazí posuvník, kde lze nastavit frekvenci jeho provedení.
Kontrolu Heartbeat API umožňuje i například WP Rocket (plugin na optimalizaci rychlosti webu).
Jak zastavit WordPress Heartbeat bez použití pluginu
Heartbeat lze také rovnou zastavit za použití funkce, kterou přidáte do vlastního pluginu nebo child šablony.
add_action( 'init', 'stop_heartbeat', 1 ); function stop_heartbeat() { wp_deregister_script('heartbeat'); }
Důsledky zastavení Heartbeat API
Ať už použijete plugin nebo vlastní funkci a deaktivujete Heatbeat API, tak na stránce dojde k následujícímu:
- Přestane fungovat automatické ukládání a revize.
- V případě odpojení od internetu u rozepsaného příspěvku a kliknutí na tlačítko Publikovat/Aktualizovat/Uložit koncept, dojde ke ztrátě obsahu.
- U eshopu neuvidíte aktuální statistiky prodeje.