Bonjour !
Je suis vraiment enthousiaste à l’idée de cette nouvelle fonctionnalité. J’attendais une solution comme celle-ci depuis longtemps, et les premiers retours de nos lecteurs sur Tecnoblog ont été excellents — ils adorent avoir la communauté intégrée.
Cependant, après quelques tests en conditions réelles, j’ai repéré plusieurs obstacles techniques qu’il faut lever pour que cela ressemble vraiment à un système de commentaires natif et, plus important encore, pour le rendre viable pour les sites à fort trafic.
Voici ce que j’ai constaté jusqu’à présent :
1. Performance et charge serveur
Notre charge serveur a considérablement augmenté après l’intégration de l’application complète. En regardant Cloudflare, notre volume de requêtes a été multiplié par 10. Voici quelques idées pour optimiser cela :
- Chargement différé (Lazy Loading) : Implémenter le lazy load pour le JavaScript aide beaucoup (j’utilise déjà une solution de contournement pour cela).
<script type="text/javascript">
DiscourseEmbed = {
discourseUrl: '<?php echo esc_url($discourse_url); ?>',
<?php if ($use_topic_id): ?>
// Mode ID : Sujet enregistré en base, immunisé contre les changements d'URL
topicId: <?php echo intval($topic_id); ?>,
<?php else: ?>
// Mode URL : Solution de repli lorsque la création via API échoue
discourseEmbedUrl: '<?php echo esc_url($permalink); ?>',
<?php endif; ?>
fullApp: true,
embedHeight: '800px',
};
(function() {
var container = document.getElementById('discourse-comments');
// Vérifie si le navigateur prend en charge IntersectionObserver
if ('IntersectionObserver' in window) {
var observer = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
// Lorsque le div entre dans l'écran, charge le script
loadDiscourse();
observer.unobserve(entry.target);
}
});
}, { rootMargin: "1500px" }); // Charge 1500px avant d'atteindre le div
observer.observe(container);
} else {
// Solution de repli pour les anciens navigateurs
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>
Ici, vous pouvez voir le nombre de requêtes diminuer après l’implémentation du Lazy Load (et certaines parties du site étant toujours mises en cache, ce n’est pas le résultat final) :
-
Réduction de la charge utile : Peut-on réduire les ressources chargées dans l’intégration ? Par exemple, j’ai remarqué des requêtes pour les URL de Chat et les vérifications de crédits IA — sont-elles nécessaires pour la vue intégrée ?
-
Fréquence des requêtes : Les requêtes POST en temps réel sont un peu agressives. Peut-être pouvons-nous réduire la fréquence de sondage pour la version intégrée ?
-
Cache : Gestion améliorée du cache pour les sujets intégrés afin de gérer les pics de trafic.
2. Chaos des analyses (Analytics)
Actuellement, l’intégration déclenche les scripts Google Analytics/GTM. Cela double nos pages vues (un hit pour l’article, un autre pour l’iframe), ce qui fausse nos données. Il serait idéal que le système détecte qu’il est dans une iframe et désactive automatiquement tous les scripts de suivi (y compris ceux d’analyse de Discourse).
3. Le problème de la hauteur de l’iframe
C’est probablement le plus grand obstacle pour l’expérience utilisateur (UX). Si un article n’a pas de commentaires, il y a un étrange espace vide. S’il y a un long fil de discussion, l’iframe est coupée après les 2 ou 3 premiers commentaires, obligeant à un « défilement dans un défilement », ce qui est plutôt mauvais, surtout sur mobile.
Pour vraiment concurrencer quelque chose comme Disqus, nous avons besoin que la hauteur soit dynamique (selon le nombre de commentaires) et qu’il y ait aussi un bouton « En savoir plus » qui développe le fil après un certain nombre de réponses.
4. Conflits de plugins
Puisque l’intégration charge tous les plugins actifs, nous constatons des comportements étranges. Par exemple, « Google One Tap » apparaît à l’intérieur de l’article de blog. Lorsqu’un utilisateur se connecte, l’iframe se rafraîchit et l’emmène sur la page d’accueil de la communauté au lieu du fil de commentaires. Pouvoir désactiver manuellement des plugins spécifiques pour la vue intégrée serait une aubaine.
5. Friction de connexion
Le flux actuel est un peu un tueur de conversion : l’utilisateur clique sur se connecter → une nouvelle onglet s’ouvre → la connexion se fait → l’utilisateur reste sur la page d’accueil de la communauté. De retour sur l’article de blog, l’iframe semble toujours déconnectée jusqu’à ce que l’utilisateur rafraîchisse manuellement toute la page. C’est une boucle confuse qui pousse les gens à abandonner et à partir avant de pouvoir commenter.
Depuis que nous avons activé la nouvelle intégration, nos inscriptions quotidiennes ont plus que doublé, ce qui est super. Cependant, nos métriques d’engagement n’ont pas bougé. En fait, notre DAU/MAU a baissé — nous avons plus d’utilisateurs connectés, mais ils n’interagissent pas. Des métriques comme « Utilisateurs actifs quotidiens », « Nouveaux contributeurs » et « Publications » n’ont connu aucune augmentation.
Cela prouve que les gens veulent rejoindre la conversation, mais ils se perdent dans la boucle de connexion et abandonnent l’article avant de pouvoir réellement commenter.
6. Interface mobile (UI)
Sur mobile, la fenêtre de réponse occupe tout l’écran, vous faisant perdre tout contexte de la conversation à laquelle vous répondez. C’est un peu oppressant — tout ce que nous pouvons faire pour la garder plus compacte serait un grand succès.
Je veux vraiment faire de cela le système par défaut pour Tecnoblog (et aussi pour un autre site que nous possédons). Faites-moi savoir si vous voulez plonger plus profondément dans l’un de ces points !



