Ciao!
Sono davvero entusiasta di questa nuova funzionalità. Aspettavo da tempo una soluzione del genere e i primi feedback dei nostri lettori di Tecnoblog sono stati eccellenti: adorano avere la comunità integrata.
Tuttavia, dopo alcuni test nel mondo reale, ho individuato alcuni ostacoli tecnici che dobbiamo superare per rendere il sistema di commenti più simile a uno nativo e, soprattutto, sostenibile per siti ad alto traffico.
Ecco cosa ho riscontrato finora:
1. Prestazioni e carico del server
Il carico del nostro server è aumentato significativamente dopo aver incorporato l’app completa. Guardando su Cloudflare, il volume delle richieste è aumentato di 10 volte. Ecco alcune idee su come ottimizzare questo aspetto:
- Caricamento differito (Lazy Loading): Implementare il caricamento differito per il JS aiuta molto (sto già utilizzando una soluzione alternativa per questo).
<script type="text/javascript">
DiscourseEmbed = {
discourseUrl: '<?php echo esc_url($discourse_url); ?>',
<?php if ($use_topic_id): ?>
// Modo ID: Topic salvato nel database, immune ai cambiamenti di URL
topicId: <?php echo intval($topic_id); ?>,
<?php else: ?>
// Modo URL: Fallback quando la creazione via API fallisce
discourseEmbedUrl: '<?php echo esc_url($permalink); ?>',
<?php endif; ?>
fullApp: true,
embedHeight: '800px',
};
(function() {
var container = document.getElementById('discourse-comments');
// Verifica se il browser supporta IntersectionObserver
if ('IntersectionObserver' in window) {
var observer = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
// Quando il div entra nella viewport, carica lo script
loadDiscourse();
observer.unobserve(entry.target);
}
});
}, { rootMargin: "1500px" }); // Carica 1500px prima di raggiungere il div
observer.observe(container);
} else {
// Fallback per browser più vecchi
loadDiscourse();
}
function loadDiscourse() {
var d = document.createElement('script');
d.type = 'text/javascript';
d.async = true;
d.src = window.DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
}
})();
</script>
Qui puoi vedere il numero di richieste diminuire dopo l’implementazione del Lazy Load (e alcune parti del sito erano ancora in cache, quindi non è il risultato finale):
-
Riduzione del payload: Possiamo ridurre le risorse caricate all’interno dell’embed? Ad esempio, ho notato query per URL delle chat e controlli sui crediti AI: sono necessari per la vista embed?
-
Frequenza delle richieste: Le richieste POST in tempo reale sono un po’ aggressive. Forse possiamo ridurre la frequenza di polling per la versione embed?
-
Cache: Gestione della cache migliorata per i topic incorporati per gestire i picchi di traffico.
2. Caos nelle analisi
Al momento, l’embed sta attivando gli script di Google Analytics/GTM. Questo sta raddoppiando le nostre visualizzazioni di pagina (un hit per il post, un altro per l’iframe), il che compromette i nostri dati. Sarebbe ideale se il sistema potesse rilevare che si trova in un iframe e disabilitare automaticamente gli script di tracciamento (inclusi quelli di analytics di Discourse).
3. Il problema dell’altezza dell’iFrame
Questo è probabilmente l’ostacolo più grande per l’UX. Se un post non ha commenti, c’è uno strano spazio vuoto. Se ha un thread lungo, l’iframe viene tagliato dopo i primi 2 o 3 commenti, costringendo a uno “scroll dentro lo scroll”, che è piuttosto pessimo, soprattutto su mobile.
Per competere davvero con qualcosa come Disqus, abbiamo bisogno che l’altezza sia dinamica (in base al numero di commenti) e anche di un pulsante “Leggi tutto” che espanda il thread dopo un certo numero di risposte.
4. Conflitti tra plugin
Poiché l’embed carica tutti i plugin attivi, stiamo riscontrando alcuni comportamenti strani. Ad esempio, “Google One Tap” appare all’interno del post del blog. Quando un utente effettua il login, l’iframe si aggiorna e lo riporta alla homepage della comunità invece che al thread dei commenti. La possibilità di disabilitare manualmente plugin specifici per la vista embed sarebbe una manna dal cielo.
5. Attrito nel login
Il flusso attuale è un po’ un killer di conversioni: l’utente clicca su login → si apre una nuova scheda → avviene il login → l’utente viene lasciato sulla homepage della comunità. Tornando sul post del blog, l’iframe sembra ancora non aver effettuato l’accesso finché l’utente non aggiorna manualmente l’intera pagina. È un ciclo confuso che fa desistere le persone e le porta ad abbandonare prima di poter commentare.
Dalla nostra attivazione del nuovo embed, i registrazioni giornaliere sono più che raddoppiate, il che è fantastico. Tuttavia, le nostre metriche di engagement non sono cambiate affatto. In realtà, i nostri DAU/MAU sono diminuiti – abbiamo più utenti connessi, ma non interagiscono. Metriche come “Utenti attivi giornalieri”, “Nuovi contributori” e “Pubblicazioni” non hanno visto alcun aumento.
Questo dimostra che le persone vogliono unirsi alla conversazione, ma si perdono nel ciclo di login e abbandonano il post prima di poter effettivamente commentare.
6. Interfaccia mobile
Su mobile, la finestra di risposta occupa tutto lo schermo, quindi si perde tutto il contesto della conversazione a cui si sta rispondendo. Sembra un po’ claustrofobico: qualsiasi cosa possiamo fare per renderla più compatta sarebbe un grande vantaggio.
Voglio davvero rendere questo il sistema predefinito per Tecnoblog (e anche per un altro sito che possediamo). Fammi sapere se vuoi approfondire qualche punto!







