¡Hola!
Estoy realmente emocionado por esta nueva función. Llevo tiempo esperando una solución como esta, y la respuesta inicial de nuestros lectores en Tecnoblog ha sido excelente: les encanta tener la comunidad integrada.
Sin embargo, tras algunas pruebas en condiciones reales, he detectado algunos obstáculos técnicos que debemos superar para que esto se sienta como un sistema de comentarios realmente nativo y, lo que es más importante, para que sea sostenible en sitios con mucho tráfico.
Esto es lo que he encontrado hasta ahora:
1. Rendimiento y carga del servidor
La carga de nuestro servidor aumentó significativamente después de integrar la aplicación completa. Según Cloudflare, el volumen de solicitudes se multiplicó por 10. Algunas ideas sobre cómo optimizar esto:
- Carga diferida (Lazy Loading): Implementar la carga diferida para el JS ayuda mucho (ya estoy usando una solución alternativa para esto).
<script type="text/javascript">
DiscourseEmbed = {
discourseUrl: '<?php echo esc_url($discourse_url); ?>',
<?php if ($use_topic_id): ?>
// Modo ID: Tema guardado en la base de datos, inmune a cambios de URL
topicId: <?php echo intval($topic_id); ?>,
<?php else: ?>
// Modo URL: Fallback cuando falla la creación vía API
discourseEmbedUrl: '<?php echo esc_url($permalink); ?>',
<?php endif; ?>
fullApp: true,
embedHeight: '800px',
};
(function() {
var container = document.getElementById('discourse-comments');
// Verifica si el navegador soporta IntersectionObserver
if ('IntersectionObserver' in window) {
var observer = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
// Cuando el div entra en la pantalla, carga el script
loadDiscourse();
observer.unobserve(entry.target);
}
});
}, { rootMargin: "1500px" }); // Carga 1500px antes de llegar al div
observer.observe(container);
} else {
// Fallback para navegadores antiguos
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>
Aquí puedes ver cómo disminuye el número de solicitudes después de implementar la carga diferida (y algunas partes del sitio web aún estaban en caché, por lo que este no es el resultado final):
-
Reducción de la carga útil: ¿Podemos reducir los recursos que se cargan dentro de la integración? Por ejemplo: noté consultas para URLs de Chat y verificaciones de créditos de IA; ¿son necesarias para la vista integrada?
-
Frecuencia de solicitudes: Las solicitudes POST en tiempo real son un poco agresivas. Quizás podamos reducir la frecuencia de sondeo para la versión integrada.
-
Caché: Mejorar la gestión de la caché para los temas integrados y manejar los picos de tráfico.
2. Caos en las analíticas
Actualmente, la integración está ejecutando scripts de Google Analytics/GTM. Esto está duplicando nuestras visitas a la página (un registro para la entrada y otro para el iframe), lo que altera nuestros datos. Sería ideal que el sistema pudiera detectar que está dentro de un iframe y desactivar automáticamente cualquier script de seguimiento (incluidas las analíticas de Discourse).
3. El problema de la altura del iFrame
Este es probablemente el mayor obstáculo para la experiencia de usuario. Si una entrada no tiene comentarios, aparece un extraño espacio vacío. Si tiene un hilo largo, el iframe se corta después de los primeros 2 o 3 comentarios, obligando a un “desplazamiento dentro de otro desplazamiento”, lo cual es bastante malo, especialmente en móviles.
Para competir realmente con algo como Disqus, necesitamos que la altura sea dinámica (según el número de comentarios) y también tener un botón “Leer más” que expanda el hilo después de cierto número de respuestas.
4. Conflictos de plugins
Dado que la integración carga todos los plugins activos, estamos viendo algunos comportamientos extraños. Por ejemplo, “Google One Tap” aparece dentro de la entrada del blog. Cuando un usuario inicia sesión, el iframe se actualiza y lo lleva a la página de inicio de la comunidad en lugar del hilo de comentarios. Poder deshabilitar manualmente plugins específicos para la vista integrada sería un gran alivio.
5. Fricción en el inicio de sesión
El flujo actual es un poco un asesino de conversiones: el usuario hace clic en iniciar sesión → se abre una nueva pestaña → se realiza el inicio de sesión → el usuario queda en la página de inicio de la comunidad. De vuelta en la entrada del blog, el iframe sigue pareciendo que no ha iniciado sesión hasta que el usuario actualiza manualmente toda la página. Es un bucle confuso que hace que la gente se rinda y se vaya antes de comentar.
Desde que activamos la nueva integración, nuestros registros diarios se han más que duplicado, lo cual es genial. Sin embargo, nuestras métricas de engagement no han cambiado en absoluto. De hecho, nuestro DAU/MAU disminuyó: tenemos más usuarios conectados, pero no están interactuando. Métricas como “Usuarios activos diarios”, “Nuevos contribuyentes” y “Publicaciones” no han visto ningún aumento.
Esto demuestra que la gente quiere unirse a la conversación, pero se pierde en el bucle de inicio de sesión y abandona la entrada antes de poder comentar realmente.
6. Interfaz de usuario en móvil
En móvil, la ventana de respuesta ocupa toda la pantalla, por lo que pierdes todo el contexto de la conversación a la que estás respondiendo. Se siente un poco claustrofóbico; cualquier cosa que podamos hacer para mantenerla más compacta sería una gran victoria.
Realmente quiero que esto sea el sistema predeterminado para Tecnoblog (y también en otro sitio que poseemos). ¡Avísame si quieres profundizar en alguno de estos puntos!







