Olá!
Estou muito animado com essa nova funcionalidade. Já faz tempo que eu aguardo uma solução como essa, e o feedback inicial dos nossos leitores no Tecnoblog tem sido ótimo — eles adoram ter a comunidade integrada.
No entanto, após alguns testes no mundo real, identifiquei alguns obstáculos técnicos que precisamos superar para que isso pareça um sistema de comentários verdadeiramente nativo e, mais importante, para torná-lo sustentável para sites de alto tráfego.
Aqui está o que eu encontrei até agora:
1. Desempenho e Carga do Servidor
A carga do nosso servidor aumentou significativamente depois que incorporamos o aplicativo completo. Olhando para o Cloudflare, o volume de solicitações multiplicou por 10. Algumas ideias sobre como otimizar isso:
- Carregamento Preguiçoso (Lazy Loading): Implementar o carregamento preguiçoso para o JS ajuda muito (eu já estou usando uma solução alternativa para isso).
<script type="text/javascript">
DiscourseEmbed = {
discourseUrl: '<?php echo esc_url($discourse_url); ?>',
<?php if ($use_topic_id): ?>
// Modo ID: Tópico salvo no banco, imune a mudanças de URL
topicId: <?php echo intval($topic_id); ?>,
<?php else: ?>
// Modo URL: Fallback quando a criação via API falha
discourseEmbedUrl: '<?php echo esc_url($permalink); ?>',
<?php endif; ?>
fullApp: true,
embedHeight: '800px',
};
(function() {
var container = document.getElementById('discourse-comments');
// Verifica se o navegador suporta IntersectionObserver
if ('IntersectionObserver' in window) {
var observer = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
// Quando o div entra na tela, carrega o script
loadDiscourse();
observer.unobserve(entry.target);
}
});
}, { rootMargin: "1500px" }); // Carrega 1500px antes de chegar no div
observer.observe(container);
} else {
// Fallback para navegadores antigos
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>
Aqui você pode ver o número de solicitações caindo depois que o Carregamento Prejudoso foi implementado (e algumas partes do site ainda estavam em cache, então este não é o resultado final):
-
Redução da carga útil: Podemos reduzir os recursos carregados dentro da incorporação? Por exemplo: notei consultas para URLs de Chat e verificações de crédito de IA — essas são necessárias para a visualização incorporada?
-
Frequência de Solicitações: As solicitações POST em tempo real são um pouco agressivas. Talvez possamos reduzir a frequência de polling para a versão incorporada?
-
Cache: Melhor gerenciamento de cache para tópicos incorporados para lidar com picos de tráfego.
2. Bagunça nas Análises
No momento, a incorporação está disparando scripts do Google Analytics/GTM. Isso está duplicando nossas visualizações de página (um hit para o post, outro para o iframe), o que prejudica nossos dados. Seria ideal se o sistema pudesse detectar que está em um iframe e desativar automaticamente qualquer script de rastreamento (inclusive as análises do Discourse).
3. Problema de Altura do iFrame
Este é provavelmente o maior obstáculo para a UX. Se um post não tem comentários, há um espaço vazio estranho. Se ele tem um thread longo, o iframe é cortado dentro dos primeiros 2 ou 3 comentários, forçando um “rolar dentro de um rolar”, o que é bastante ruim, especialmente em dispositivos móveis.
Para realmente competir com algo como o Disqus, precisamos que a altura seja dinâmica (de acordo com o número de comentários) e também ter um botão “Ler Mais” que expanda o thread após um certo número de respostas.
4. Conflitos de Plugins
Como a incorporação carrega todos os plugins ativos, estamos vendo alguns comportamentos estranhos. Por exemplo, o “Google One Tap” aparece dentro do post do blog. Quando um usuário faz login, o iframe é atualizado e o leva à página inicial da comunidade em vez do thread de comentários. Poder desabilitar manualmente plugins específicos para a visualização incorporada seria uma grande ajuda.
5. Atrito no Login
O fluxo atual é um pouco um assassino de conversão: O usuário clica em login → Uma nova aba se abre → O login acontece → O usuário fica na página inicial da comunidade. De volta ao post do blog, o iframe ainda parece desconectado até que o usuário atualize manualmente toda a página. É um ciclo confuso que faz as pessoas desistirem e saírem antes de comentar.
Desde que ativamos a nova incorporação, nossos registros diários mais do que dobraram, o que é ótimo. No entanto, nossas métricas de engajamento não se moveram em nada. Na verdade, nosso DAU/MAU caiu — temos mais usuários conectados, mas eles não estão interagindo. Métricas como “Usuários Engajados Diariamente”, “Novos Contribuidores” e “Publicações” não viram nenhum aumento.
Isso prova que as pessoas querem participar da conversa, mas estão se perdendo no ciclo de login e abandonando o post antes de poderem realmente comentar.
6. Interface Móvel
Em dispositivos móveis, a janela de resposta ocupa toda a tela, então você perde todo o contexto da conversa à qual está respondendo. Parece um pouco claustrofóbico — qualquer coisa que possamos fazer para mantê-la mais compacta seria uma grande vitória.
Eu realmente quero fazer deste o sistema padrão para o Tecnoblog (e também em outro site que possuímos). Me avise se quiser mergulhar mais fundo em algum desses pontos!







