WordPressin Heartbeat API on taustalla toimiva järjestelmä, joka lähettää automaattisesti AJAX-pyyntöjä selaimen ja palvelimen välillä. Sen tarkoitus on mahdollistaa reaaliaikaiset toiminnot kuten automaattiset tallennukset, käyttäjäsessioiden hallinta ja editorin lukitus. Vaikka Heartbeat API on hyödyllinen, se voi myös aiheuttaa merkittävää suorituskykykuormaa erityisesti suurilla WordPress-sivustoilla ja WooCommerce-kaupoissa.
Heartbeat API lisättiin WordPressiin reaaliaikaisia toimintoja varten. Se käyttää AJAX-pyyntöjä tiedonsiirtoon selaimen ja palvelimen välillä....
Heartbeat API:n tärkeimmät tehtävät:...
Ongelma syntyy siitä, että Heartbeat lähettää jatkuvia AJAX-pyyntöjä palvelimelle. Jokainen pyyntö:...
Heartbeat käyttää admin-ajax.php-endpointia, joka on tunnetusti raskas WordPressissä....
WooCommerce käyttää Heartbeatia aktiivisesti....
Heartbeat näkyy yleensä selaimen Network-välilehdellä....
Heartbeatia ei yleensä kannata poistaa kokonaan, vaan hidastaa sen toimintaa....
Tietyissä tilanteissa Heartbeat voidaan poistaa frontendistä....
Suositeltu malli:...
Yleisimmät plugin-ratkaisut:...
WordPress editorin autosave käyttää Heartbeatia....
Heartbeat hallitsee editor lock -toimintoa....
Heartbeatin lisäksi kannattaa optimoida:...
Suurilla sivustoilla Heartbeat voi muuttua merkittäväksi skaalautuvuusongelmaksi....
Optimointi on tärkeää erityisesti jos:...
WordPressin Heartbeat API on hyödyllinen järjestelmä, joka mahdollistaa autosaven, editor lockin ja reaaliaikaiset toiminnot. Ongelmat syntyvät yleensä siitä, että Heartbeat tekee liian tiheitä AJAX-pyyntöjä ilman...
Monet suorituskykyongelmat johtuvat tilanteista, joissa Heartbeat tekee jatkuvasti tarpeettomia pyyntöjä palvelimelle.
Mikä WordPress Heartbeat API on
Heartbeat API lisättiin WordPressiin reaaliaikaisia toimintoja varten. Se käyttää AJAX-pyyntöjä tiedonsiirtoon selaimen ja palvelimen välillä.
Heartbeat toimii yleensä:
- 15–60 sekunnin välein
- admin-paneelissa
- editorissa
- joskus frontendissä pluginien kautta
Pyyntö kohdistuu tiedostoon:
wp-admin/admin-ajax.php
Mitä Heartbeat API tekee
Heartbeat API:n tärkeimmät tehtävät:
- automaattinen postauksen tallennus
- editor lock (estää useita muokkaajia)
- käyttäjäsession hallinta
- pluginien reaaliaikaiset toiminnot
- WooCommerce-dashboard päivitykset
- ilmoitukset ja taustasynkronointi
Ilman Heartbeatia moni WordPressin moderni toiminto ei toimisi yhtä sujuvasti.
Miksi Heartbeat voi hidastaa WordPressiä
Ongelma syntyy siitä, että Heartbeat lähettää jatkuvia AJAX-pyyntöjä palvelimelle. Jokainen pyyntö:
- käynnistää WordPressin bootstrapin
- lataa pluginet
- suorittaa hookit
- käyttää CPU:ta ja muistia
Jos käyttäjiä on paljon yhtä aikaa adminissa tai frontendissä, kuorma voi kasvaa nopeasti.
Heartbeat ja admin-ajax.php
Heartbeat käyttää admin-ajax.php-endpointia, joka on tunnetusti raskas WordPressissä.
Tyypillisiä ongelmia:
- korkea CPU-kuorma
- suuret PHP-prosessimäärät
- hitaat admin-paneelit
- WooCommerce-dashboardin hidastuminen
- korkea TTFB
Erityisesti halvoissa hostingeissa tämä näkyy nopeasti.
WooCommerce ja Heartbeat API
WooCommerce käyttää Heartbeatia aktiivisesti.
Esimerkkejä:
- tilausten päivitykset
- varastosynkronointi
- admin-ilmoitukset
- raportit
- käyttäjäsessiot
Suurissa verkkokaupoissa Heartbeat voi aiheuttaa huomattavaa palvelinkuormaa ilman optimointia.
Miten nähdä Heartbeat-kuorma
Heartbeat näkyy yleensä selaimen Network-välilehdellä.
Tyypillinen pyyntö:
admin-ajax.php?action=heartbeat
Monitorointityökaluja:
- Chrome DevTools
- Query Monitor
- New Relic
- GTmetrix
- server access logs
Näistä näkee kuinka usein heartbeat-pyyntöjä tehdään.
Heartbeat API:n rajoittaminen
Heartbeatia ei yleensä kannata poistaa kokonaan, vaan hidastaa sen toimintaa.
Esimerkki:
add_filter( 'heartbeat_settings', function( $settings ) {
$settings['interval'] = 60;
return $settings;
});
Tämä kasvattaa heartbeat-välin 60 sekuntiin.
Heartbeatin poistaminen käytöstä
Tietyissä tilanteissa Heartbeat voidaan poistaa frontendistä.
wp_deregister_script('heartbeat');
Tai:
add_action('init', function() {
wp_deregister_script('heartbeat');
}, 1);
Täydellinen poistaminen voi kuitenkin rikkoa joitain toimintoja.
Paras käytäntö: rajoita vain tarvittaessa
Suositeltu malli:
- editorissa heartbeat aktiivinen
- dashboardissa hidastettu
- frontendissä pois ellei tarvita
Tämä säilyttää toiminnallisuuden mutta vähentää kuormaa merkittävästi.
Heartbeat Control -lisäosat
Yleisimmät plugin-ratkaisut:
- Heartbeat Control by WP Rocket
- Perfmatters
- Asset CleanUp
Näillä voidaan:
- säätää intervalia
- poistaa heartbeat frontendistä
- hallita admin-alueita
Kevyt custom-koodi on kuitenkin usein tehokkaampi.
Heartbeat ja autosave
WordPress editorin autosave käyttää Heartbeatia.
Hyödyt:
- estää datan menetyksen
- palauttaa luonnoksia
- suojaa selainkaatumisilta
Jos Heartbeat poistetaan täysin editorista, autosave ei enää toimi normaalisti.
Heartbeat ja monen käyttäjän editointi
Heartbeat hallitsee editor lock -toimintoa.
Esimerkki:
- käyttäjä A avaa artikkelin
- käyttäjä B yrittää muokata samaa sisältöä
- WordPress estää konfliktin Heartbeatin avulla
Tämä on tärkeä ominaisuus monen kirjoittajan sivustoissa.
CPU-kuorman optimointi
Heartbeatin lisäksi kannattaa optimoida:
- Redis Object Cache
- PHP 8.x
- OPCache
- FastCGI cache
- plugin-kuorma
- admin AJAX -kutsut
Heartbeat yksin ei yleensä ole ongelma, vaan osa suurempaa kokonaisuutta.
Heartbeat ja skaalautuvuus
Suurilla sivustoilla Heartbeat voi muuttua merkittäväksi skaalautuvuusongelmaksi.
Esimerkki:
- 100 admin-käyttäjää
- heartbeat 15 sekunnin välein
- satoja AJAX-pyyntöjä minuutissa
Tämä voi kuormittaa palvelinta huomattavasti.
Milloin Heartbeat kannattaa optimoida
Optimointi on tärkeää erityisesti jos:
- admin on hidas
- CPU usage on korkea
- admin-ajax.php näkyy jatkuvasti lokeissa
- WooCommerce-dashboard lagaa
- hosting-resurssit loppuvat
Yhteenveto
WordPressin Heartbeat API on hyödyllinen järjestelmä, joka mahdollistaa autosaven, editor lockin ja reaaliaikaiset toiminnot. Ongelmat syntyvät yleensä siitä, että Heartbeat tekee liian tiheitä AJAX-pyyntöjä ilman optimointia.
Paras ratkaisu ei yleensä ole Heartbeatin täydellinen poistaminen, vaan sen hallittu rajoittaminen. Kun intervalit säädetään oikein ja frontend-kuorma minimoidaan, WordPress toimii huomattavasti tehokkaammin ilman että tärkeät ominaisuudet rikkoutuvat.
