{"id":664,"date":"2026-10-01T10:00:00","date_gmt":"2026-10-01T08:00:00","guid":{"rendered":"https:\/\/aarkly.com\/?p=664"},"modified":"2026-07-21T12:50:08","modified_gmt":"2026-07-21T10:50:08","slug":"wordpress-heartbeat-api-optimization","status":"publish","type":"post","link":"https:\/\/aarkly.com\/it\/wordpress-heartbeat-api-optimization\/","title":{"rendered":"WordPress Heartbeat API: Controllo e Ottimizzazione"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Cosa \u00e8 l&#8217;Heartbeat API di WordPress<\/h2>\n\n<p class=\"wp-block-paragraph\">L&#8217;Heartbeat API \u00e8 una funzionalit\u00e0 introdotta in WordPress 3.6 che mantiene una connessione tra il browser dell&#8217;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\u00e0 come l&#8217;autosave, la sincronizzazione delle sessioni di editing tra pi\u00f9 utenti, e la visualizzazione in tempo reale delle notifiche.<\/p>\n\n<h2 class=\"wp-block-heading\">Come Funziona l&#8217;Heartbeat<\/h2>\n\n<p class=\"wp-block-paragraph\">Il heartbeat si basa su tick predefiniti. Ogni tick \u00e8 un&#8217;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&#8217;azione &#8216;heartbeat&#8217;.<\/p>\n\n<h2 class=\"wp-block-heading\">Problemi di Performance<\/h2>\n\n<p class=\"wp-block-paragraph\">L&#8217;heartbeat pu\u00f2 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\u00f9 tab aperti o utenti contemporanei, il carico sul server pu\u00f2 diventare considerevole. Plugin mal ottimizzati che si agganciano all&#8217;heartbeat possono peggiorare ulteriormente la situazione.<\/p>\n\n<h2 class=\"wp-block-heading\">Controllare la Frequenza dell&#8217;Heartbeat<\/h2>\n\n<p class=\"wp-block-paragraph\">La frequenza dell&#8217;heartbeat pu\u00f2 essere controllata tramite JavaScript usando il filtro &#8216;heartbeat-settings&#8217;. Puoi ridurre l&#8217;intervallo a 60 secondi per pagine di editing, o disabilitarlo completamente dove non serve. Ecco un esempio per ridurre la frequenza:<\/p>\n\n<pre>jQuery(document).on('heartbeat-settings', function(event, settings) {\n    settings.interval = 60;\n    settings.autostart = false;\n    return settings;\n});<\/pre>\n\n<h2 class=\"wp-block-heading\">Disabilitare l&#8217;Heartbeat in Pagine Specifiche<\/h2>\n\n<p class=\"wp-block-paragraph\">Puoi disabilitare l&#8217;heartbeat globalmente o su pagine specifiche usando wp_deregister_script. Per disabilitarlo su tutte le pagine tranne l&#8217;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\u00e0 critiche come l&#8217;autosave.<\/p>\n\n<h2 class=\"wp-block-heading\">Ottimizzare le Risposte dell&#8217;Heartbeat<\/h2>\n\n<p class=\"wp-block-paragraph\">Quando sviluppi plugin che usano l&#8217;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\u00f9. Usa heartbeat_received per processare i dati lato server in modo efficiente e heartbeat_send per aggiungere dati alla risposta.<\/p>\n\n<h2 class=\"wp-block-heading\">Strumenti di Monitoraggio<\/h2>\n\n<p class=\"wp-block-paragraph\">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.<\/p>\n\n<h2 class=\"wp-block-heading\">Heartbeat e Hosting<\/h2>\n\n<p class=\"wp-block-paragraph\">In ambienti di hosting condiviso, l&#8217;heartbeat pu\u00f2 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&#8217;impatto sulle performance generali del sito.<\/p>\n\n<h2 class=\"wp-block-heading\">Alternative all&#8217;Heartbeat<\/h2>\n\n<p class=\"wp-block-paragraph\">Per applicazioni che richiedono aggiornamenti in tempo reale pi\u00f9 efficienti, considera alternative come WebSockets, Server-Sent Events (SSE), o long polling. Queste tecnologie offrono una comunicazione bidirezionale pi\u00f9 efficiente rispetto all&#8217;AJAX polling dell&#8217;heartbeat, ma richiedono configurazioni server-specifiche e non sono native in WordPress.<\/p>\n\n<h2 class=\"wp-block-heading\">Conclusione<\/h2>\n\n<p class=\"wp-block-paragraph\">L&#8217;Heartbeat API \u00e8 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&#8217;ottimizzazione dell&#8217;heartbeat \u00e8 essenziale.<\/p>","protected":false},"excerpt":{"rendered":"<p>Cosa \u00e8 l&#8217;Heartbeat API di WordPress L&#8217;Heartbeat API \u00e8 una funzionalit\u00e0 introdotta in WordPress 3.6 che mantiene una connessione tra il browser dell&#8217;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\u00e0 come l&#8217;autosave, la sincronizzazione delle sessioni di editing tra [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1113,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ai_primary_source":"","visibility_scope":"","ai_summary":"","ai_intent":"","ai_related_resources":"","ai_priority":0,"ai_entity_type":"","ai_is_based_on":"","ai_citations":"","ai_mentions":"","ai_speakable_selector":"","ai_chunk_hints":"","footnotes":""},"categories":[6],"tags":[47,45,46],"ai_visibility":[],"class_list":["post-664","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-php-development","tag-wordpress-development","tag-wordpress-performance-2"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"_links":{"self":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts\/664","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/comments?post=664"}],"version-history":[{"count":1,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts\/664\/revisions"}],"predecessor-version":[{"id":878,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts\/664\/revisions\/878"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/media\/1113"}],"wp:attachment":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/media?parent=664"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/categories?post=664"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/tags?post=664"},{"taxonomy":"ai_visibility","embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/ai_visibility?post=664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}