Salut !
Je suis vraiment enthousiaste à l’idée de cette nouvelle fonctionnalité. J’attends une solution comme celle-ci depuis longtemps, et les premiers retours de nos lecteurs chez Tecnoblog sont excellents — ils adorent avoir la communauté intégrée.
Cependant, après quelques tests en conditions réelles, j’ai repéré quelques obstacles techniques que nous devons surmonter pour que cela ressemble à un système de commentaires véritablement natif et, plus important encore, pour le rendre viable pour les sites à fort trafic.
Voici ce que j’ai découvert jusqu’à présent :
1. Performance et charge serveur
La charge de notre serveur a augmenté de façon significative après l’intégration de l’application complète. En consultant Cloudflare, notre volume de requêtes a été multiplié par 10. Voici quelques idées pour optimiser cela :
- Chargement différé (Lazy Loading) : Mettre en place un chargement différé pour le JS 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 en cas d'échec de la création via l'API
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) {
// Quand le div entre dans la fenêtre, 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 la baisse du nombre de requêtes après la mise en place du chargement différé (et certaines parties du site étaient encore en cache, donc ce n’est pas le résultat final) :
-
Réduction de la charge utile : Pouvons-nous 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 : Une gestion améliorée du cache pour les sujets intégrés afin de gérer les pics de trafic.
2. Problèmes d’analyse (Analytics)
Pour l’instant, l’intégration déclenche les scripts Google Analytics/GTM. Cela double nos pages vues (un clic pour l’article, un autre pour l’iframe), ce qui fausse nos données. Il serait idéal que le système puisse détecter qu’il est dans une iframe et désactiver automatiquement tous les scripts de suivi (y compris les analyses Discourse).
3. Le problème de hauteur de l’iframe
C’est probablement le plus grand obstacle pour l’expérience utilisateur. Si un article n’a aucun commentaire, il y a un espace vide étrange. 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 assez mauvais, surtout sur mobile.
Pour vraiment rivaliser avec quelque chose comme Disqus, nous avons besoin d’une hauteur dynamique (selon le nombre de commentaires) et aussi d’un bouton « Lire la suite » qui développe le fil après un certain nombre de réponses.
4. Conflits de plugins
Comme l’intégration charge tous les plugins actifs, nous observons certains 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 le redirige vers la page d’accueil de la communauté au lieu du fil de commentaires. Pouvoir désactiver manuellement certains plugins pour la vue intégrée serait une véritable aubaine.
5. Friction lors de la connexion
Le flux actuel est un vrai tueur de conversion : L’utilisateur clique sur connexion → Un nouvel onglet s’ouvre → La connexion se fait → L’utilisateur se retrouve sur la page d’accueil de la communauté. Sur l’article de blog, l’iframe semble toujours déconnecté 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 commenter.
Depuis l’activation de la nouvelle intégration, nos inscriptions quotidiennes ont plus que doublé, ce qui est excellent. 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 engagés quotidiens », « Nouveaux contributeurs » et « Publications » n’ont vu 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
Sur mobile, la fenêtre de réponse prend tout l’écran, donc on perd tout le contexte de la conversation à laquelle on répond. Cela fait un peu claustrophobe — tout ce qu’on peut faire pour la rendre plus compacte serait un gros avantage.
Je veux vraiment que ce soit le système par défaut pour Tecnoblog (et aussi pour un autre site que nous possédons). Faites-moi savoir si vous voulez approfondir l’un de ces points !







