Cosa è l’Heartbeat API di WordPress
L’Heartbeat API è una funzionalità introdotta in WordPress 3.6 che mantiene una connessione tra il browser dell’utente e il server. Ogni 15-60 secondi, il browser invia una richiesta AJAX al server, che risponde con dati aggiornati. Questo sistema permette funzionalità come l’autosave, la sincronizzazione delle sessioni di editing tra più utenti, e la visualizzazione in tempo reale delle notifiche.
Come Funziona l’Heartbeat
Il heartbeat si basa su tick predefiniti. Ogni tick è un’occasione per il server di inviare dati al client e riceverne. WordPress utilizza JavaScript lato client (heartbeat.js) per gestire le richieste AJAX, e PHP lato server (Heartbeat API) per processare i dati. Le richieste vengono inviate tramite POST a admin-ajax.php con l’azione ‘heartbeat’.
Problemi di Performance
L’heartbeat può consumare risorse significative, specialmente in ambienti di hosting condiviso. Ogni richiesta carica completamente WordPress, esegue hook, query al database e genera una risposta JSON. Con più tab aperti o utenti contemporanei, il carico sul server può diventare considerevole. Plugin mal ottimizzati che si agganciano all’heartbeat possono peggiorare ulteriormente la situazione.
Controllare la Frequenza dell’Heartbeat
La frequenza dell’heartbeat può essere controllata tramite JavaScript usando il filtro ‘heartbeat-settings’. Puoi ridurre l’intervallo a 60 secondi per pagine di editing, o disabilitarlo completamente dove non serve. Ecco un esempio per ridurre la frequenza:
jQuery(document).on('heartbeat-settings', function(event, settings) {
settings.interval = 60;
settings.autostart = false;
return settings;
});Disabilitare l’Heartbeat in Pagine Specifiche
Puoi disabilitare l’heartbeat globalmente o su pagine specifiche usando wp_deregister_script. Per disabilitarlo su tutte le pagine tranne l’editing dei post: funzione da inserire in functions.php del tema o in un plugin mu-plugin. La disabilitazione selettiva migliora le performance senza sacrificare funzionalità critiche come l’autosave.
Ottimizzare le Risposte dell’Heartbeat
Quando sviluppi plugin che usano l’heartbeat, segui queste best practice: mantieni le risposte leggere, evita query pesanti, usa la cache quando possibile, e rimuovi i tuoi data tick quando non servono più. Usa heartbeat_received per processare i dati lato server in modo efficiente e heartbeat_send per aggiungere dati alla risposta.
Strumenti di Monitoraggio
Plugin come Query Monitor possono mostrare le richieste heartbeat in tempo reale, aiutandoti a identificare quali script e hook vengono eseguiti ad ogni tick. Puoi anche usare gli strumenti sviluppatore del browser (rete) per analizzare le richieste heartbeat e il loro payload. Queste informazioni sono preziose per ottimizzare le performance del backend.
Heartbeat e Hosting
In ambienti di hosting condiviso, l’heartbeat può causare timeout e rallentamenti. Alcuni provider offrono configurazioni server-side per limitare le richieste AJAX. Soluzioni come il caching delle risposte heartbeat e la limitazione della frequenza lato server possono ridurre significativamente l’impatto sulle performance generali del sito.
Alternative all’Heartbeat
Per applicazioni che richiedono aggiornamenti in tempo reale più efficienti, considera alternative come WebSockets, Server-Sent Events (SSE), o long polling. Queste tecnologie offrono una comunicazione bidirezionale più efficiente rispetto all’AJAX polling dell’heartbeat, ma richiedono configurazioni server-specifiche e non sono native in WordPress.
Conclusione
L’Heartbeat API è uno strumento potente ma deve essere gestito con cura per evitare problemi di performance. Comprendere come funziona, come controllarlo e quando disabilitarlo ti permette di mantenere un backend WordPress reattivo ed efficiente. Per la maggior parte dei siti, le impostazioni predefinite sono accettabili, ma per siti ad alto traffico o hosting condiviso, l’ottimizzazione dell’heartbeat è essenziale.




