WordPress Heartbeat API

WordPress Heartbeat API: che cos’è e perché è stata implementata

Chi sceglie di utilizzare WordPress per la creazione e la gestione di siti web, blog aziendali e e-commerce, lo fa principalmente per avere a disposizione uno strumento immediato, facile da utilizzare, ricco di funzionalità e in grado di semplificare tutte le operazioni.

Tra i tanti vantaggi offerti da questo CMS, rientrano il salvataggio automatico dei post e il logout degli amministratori dalla dashboard, dopo un certo periodo di inattività; queste due funzioni sono rese possibili dalla presenza di una particolare API, Heartbeat, la quale opera di default sulla piattaforma, ma, all’occorrenza, può essere disattivata totalmente o parzialmente.

WordPress Heartbeat API

Heartbeat: di cosa si tratta

Heartbeat è un’Application Programming Interface – in italiano, “interfaccia di programmazione delle applicazioni” – implementata in WordPress a partire dal 2013, ossia dalla versione 3.6, allo scopo di creare un canale di comunicazione automatico tra il browser e il server.

Questo sistema di comunicazione, basato su chiamate AJAX e, più nello specifico, sul file admin-ajax.php, consente di generare tra i due uno scambio di dati in tempo reale e a intervalli regolari, proprio come il battito di un cuore.

La sua implementazione è stata effettuata per migliorare e ottimizzare l’utilizzo della dashboard di WordPress, anche quando viene utilizzata da più autori, amministratori o utenti contemporaneamente.

A che cosa serve

L’API Heartbeat presenta numerose funzioni automatiche, le quali spesso passano inosservate, ma che garantiscono un uso più agevole della piattaforma.

Tra le sue funzioni principali rientrano:

  • il salvataggio automatico di articoli e pagine durante la loro creazione o quando si apportano modifiche a contenuti già esistenti: questo limita la perdita dei contenuti e non obbliga l’utente a ricordarsi di salvare periodicamente la bozza
  • il blocco dei post ai quali sta già lavorando un utente: il blocco evita che più soggetti effettuino in contemporanea modifiche a uno stesso contenuto
  • la visualizzazione delle vendite effettuate tramite i plug-in di e-commerce: grazie all’API, il venditore può avere sempre sotto controllo il proprio negozio virtuale.

Oltre a questo, l’API si occupa della disconnessione degli utenti inattivi da un certo lasso di tempo, dell’invio di notifiche provenienti da determinati plugin, del monitoraggio di varie attività in backend e via dicendo.

Come funziona

Quando un utente effettua l’accesso alla dashboard di WordPress e comincia a utilizzare alcune delle funzioni in essa presenti, l’API si mette all’opera, inviando richieste al server ogni 15 secondi circa. Il processo si ripete per ogni utente connesso e continua anche quando la pagina rimane aperta, ma non vengono effettuate azioni di nessun genere.

È per questo motivo che, se da un lato Heartbeat rende più veloce lo scambio di dati e limita tutta una serie di problemi, tra cui la perdita dei dati inseriti in caso di disconnessione anticipata dalla rete, dall’altro può portare alla comparsa di problematiche di altra natura, in particolare se si utilizzano hosting condivisi.

Il problema principale riguarda l’eccessivo uso della CPU, il quale può ridurre le prestazioni dello spazio virtuale e portare a una sospensione del servizio di rete.

Nel caso in cui i disagi causati dall’API superassero i benefici, si potrebbe procedere con la sua disattivazione, totale o parziale.

Disabilitare Heartbeat tramite functions.php

Disabilitare Heartbeat  in tutto il sito

Per disabilitare in toto heartbeat basta aggiungere all’inizio del file functions.php, quindi subito dopo il tag di apertura <?php,  questo codice

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
 wp_deregister_script('heartbeat');
}

Disabilitare Heartbeat solo nella dashboard

Per disabilitare heartbeat solo nella dashboard basta aggiungere all’inizio del file functions.php, quindi subito dopo il tag di apertura <?php,  questo codice

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
global $pagenow;
if ( $pagenow == 'index.php' )
wp_deregister_script('heartbeat');
}

Disabilitare Heartbeat per tutto il sito tranne che per i post

Per disabilitare heartbeat in tutto il sito  tranne che per le pagine post.php e post_new.php  basta aggiungere all’inizio del file functions.php, quindi subito dopo il tag di apertura <?php,  questo codice

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
global $pagenow;
if ( $pagenow != 'post.php' && $pagenow != 'post-new.php' )
wp_deregister_script('heartbeat');
}

Disabilitare Heartbeat tramite Plugin

E’ possibile eseguire questa operazione anche tramite plugin. Nonostante sia sconsigliato utilizzare i plugin per eseguire queste operazioni, per mantenere snello WP, è interessante notare che sull’Hosting WordPress e, in generale, su tutti i servizi Hosting con LiteSpeed è possibile attivarlo tramite il plugin di Litespeed stesso.

Heartbeat control tramite LiteSpeed

Con i piani Hosting WordPress, Hosting Professionale/Semidedicato, ma in generale su tutti i piani Hosting con LiteSpeed, è possibile gestire Heartbeat automaticamente.

Basta andare su LiteSpeed Cache>Tools (1)>Heartbeat (2)

WordPress Heartbeat API

Dove sarà poi possibile gestire Heartbeat, impostandolo su on e off, sul frontend (3), nel backend (4) e solo per l’editor (5) impostando anche il TTL.

 

Heartbeat control Plugin by WP-Rocket

E’ possibile utilizzare il plugin Heartbeat control (attenzione: non aggiornato da 2 anni) per limitare Heartbeat.

Una volta ricercato basta installarlo

WordPress Heartbeat API

Andando poi su Impostazioni>Heartbeat Control è possibile settare i vari parametri

WordPress Heartbeat API

  1. Lasciare attivo o meno headtbeat solo nella dashboard
  2. Lasciare attivo o meno headtbeat solo nel frontend
  3. Lasciare attivo o meno headtbeat solo nei post

La configurazione risulta quindi molto semplice e minimale.