Ciao!
Sono davvero entusiasta di questa nuova funzionalità. Aspettavo una soluzione del genere da molto tempo, e i primi feedback dai nostri lettori su Tecnoblog sono stati ottimi: amano avere la community integrata.
Tuttavia, dopo alcuni test reali, ho individuato alcune sfide tecniche che dobbiamo superare per rendere questo sistema di commenti davvero nativo e, soprattutto, sostenibile per siti ad alto traffico.
Ecco cosa ho rilevato finora:
1. Prestazioni e carico del server
Il carico del nostro server è aumentato significativamente dopo aver incorporato l’app completa. Guardando Cloudflare, il volume delle richieste si è moltiplicato per 10. Ecco alcune idee su come ottimizzare:
- Caricamento differito (Lazy Loading): Implementare il lazy load per il JavaScript aiuta molto (sto già usando una soluzione temporanea per questo).
<script type="text/javascript">
DiscourseEmbed = {
discourseUrl: '<?php echo esc_url($discourse_url); ?>',
<?php if ($use_topic_id): ?>
// Modalità ID: Argomento salvato nel database, immune ai cambiamenti di URL
topicId: <?php echo intval($topic_id); ?>,
<?php else: ?>
// Modalità URL: Fallback quando la creazione tramite 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 nello schermo, carica lo script
loadDiscourse();
observer.unobserve(entry.target);
}
});
}, { rootMargin: "1500px" }); // Carica 1500px prima di raggiungere il div
observer.observe(container);
} else {
// Fallback per browser 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 nella cache, quindi non è il risultato finale):
-
Riduzione del payload: Possiamo ridurre le risorse caricate nell’incorporamento? Ad esempio: ho notato query per URL della chat e controlli dei crediti AI: sono necessari per la visualizzazione incorporata?
-
Frequenza delle richieste: Le richieste POST in tempo reale sono un po’ aggressive. Forse possiamo ridurre la frequenza di polling per la versione incorporata?
-
Cache: Migliore gestione della cache per gli argomenti incorporati per gestire picchi di traffico.
2. Caos nell’analisi
Attualmente, l’incorporamento esegue script di Google Analytics/GTM. Questo raddoppia le 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 di essere in un iframe e disattivare automaticamente tutti gli script di tracciamento (anche quelli di analisi di Discourse).
3. Il problema dell’altezza dell’iframe
Questa è probabilmente la sfida più grande per l’esperienza utente. Se un post non ha commenti, c’è uno strano spazio vuoto. Se ha una lunga discussione, l’iframe viene tagliato dopo i primi 2 o 3 commenti, costringendo a uno “scroll dentro uno scroll”, che è piuttosto brutto, specialmente su mobile.
Per competere davvero con qualcosa come Disqus, abbiamo bisogno che l’altezza sia dinamica (in base al numero di commenti) e che ci sia anche un pulsante “Leggi altro” che espande la discussione dopo un certo numero di risposte.
4. Conflitti con i plugin
Poiché l’incorporamento carica tutti i plugin attivi, stiamo osservando comportamenti strani. Ad esempio, “Google One Tap” appare all’interno del post del blog. Quando un utente accede, l’iframe si aggiorna e lo riporta alla home page della community invece che al thread dei commenti. Poter disabilitare manualmente plugin specifici per la visualizzazione incorporata sarebbe una salvezza.
5. Attrito nell’accesso
Il flusso attuale è un po’ un killer delle conversioni: l’utente clicca su accedi → si apre una nuova scheda → avviene l’accesso → l’utente rimane sulla home page della community. Tornando al post del blog, l’iframe appare ancora come non connesso finché l’utente non aggiorna manualmente l’intera pagina. È un circolo vizioso confuso che porta le persone ad arrendersi e abbandonare prima di poter commentare.
Dopo aver attivato il nuovo incorporamento, le nostre registrazioni giornaliere sono più che raddoppiate, il che è ottimo. Tuttavia, le nostre metriche di engagement non si sono mosse affatto. Anzi, il nostro DAU/MAU è sceso: abbiamo più utenti connessi, ma non stanno interagendo. Metriche come “Utenti attivi quotidiani”, “Nuovi contributori” e “Pubblicazioni” non hanno registrato alcun aumento.
Questo dimostra che le persone vogliono partecipare alla conversazione, ma si perdono nel loop di accesso e abbandonano il post prima di poter effettivamente commentare.
6. Interfaccia utente mobile
Su mobile, la finestra di risposta occupa tutto lo schermo, quindi perdi ogni contesto della conversazione a cui stai rispondendo. Si sente un po’ claustrofobico: qualsiasi cosa possiamo fare per mantenerla più compatta sarebbe un grande successo.
Voglio davvero rendere questo il sistema predefinito per Tecnoblog (e anche per un altro sito di nostra proprietà). Fammi sapere se vuoi approfondire uno di questi punti!



