Il y a un bogue dans l’application Discourse lié à la mise à jour de l’élément de métadonnées <link rel="canonical"> dans la section <head> du DOM de Discourse.
En gros, lorsqu’un client navigateur accède à l’application et que celle-ci est chargée pour la première fois, l’élément <link rel="canonical" href=""> est défini selon ce chargement initial de la page ; mais ensuite, lorsqu’un utilisateur clique dans l’application (comportement normal de l’utilisateur), sans recharger manuellement la page, le lien <link rel="canonical"> ne se met pas à jour.
J’ai testé ce bogue et je l’ai reproduit sur le site meta :
Fig 1. Entrer sur meta depuis la page d’accueil, le lien canonique est correct, tout comme l’élément title.
Fig 2. Visiter un sujet. L’élément title change correctement, mais le lien canonique n’est pas correct (ne se met pas à jour comme il le devrait).
Fig 3. Visiter un autre sujet. L’élément title change correctement, mais le lien canonique n’est pas correct (ne se met pas à jour comme il le devrait).
Implications pour le référencement (SEO)
Ce bogue pourrait nuire au référencement, car lorsque Google indexe la page, si Googlebot ne fait pas un « rechargement complet » de chaque page, les informations canoniques seront incorrectes pour chaque page (comme dans les séquences d’images ci-dessus).
Reproductibilité
J’ai reproduit ce bogue de manière cohérente à la fois sur le site meta et sur notre site.
Notes
J’ai déjà rencontré ce type de problèmes de cycle de vie avec node.js (SPA) dans d’autres frameworks web (pas seulement Ember), où les éléments du DOM ne sont pas mis à jour, en raison des hooks de cycle de vie (Ember et autres frameworks SPA) au sein du framework d’application web.



