Un CDN pour les assets statiques du forum!

Salut tout le monde :slight_smile:

Petit message pour vous prévenir, j’ai déployé un CDN pour gérer les assets du forum (CSS/JS/icônes/images)

C’est tout con, mais je me suis rendu compte que le forum faisait un paquet de requêtes pour charger le CSS/JS/icônes/images et toutes ces requêtes c’était assez dommage qu’elles soient faites sur l’origin et pas sur un CDN proche de l’utilisateur.

Certaines pages chargent pas mal de ressources statiques, et autant décharger le backend du forum qui peut se concentrer sur le contenu dynamique :slight_smile:

L’objectif, c’est aussi d’améliorer les Web Vitals du forum pour mieux rank sur Google.

(Aussi, pour les utilisateurs comme moi en Asie, ça améliore grandement les temps de chargement :innocent: )

Pour mettre ça en place, Discourse propose une configuration clé en main, que j’ai déployé vraiment simplement. J’ai utilisé Bunny CDN comme CDN.

Pour l’instant tout fonctionne, mais du coup si jamais vous voyez des bugs de chargement à des moments, prévenez moi :slight_smile:

1 Like

Bonne idée !
So far so good…

Premier petit problème (oups), comme le CDN contact le forum avec la même IP (c’est un CDN de type “pull”, il faut donc que le cache se “warm up”), le rate-limite interne du forum (Nginx) bloque le CDN par moment avec des 429 Too Many Requests.

Bon pour l’instant c’est pas trop arrivé mais j’en ai vu quelques une passer:

Je redémarre le forum avec le correctif !

Bein non, 18h, c’est pas encore arrivé… :sweat_smile:

1 Like

Le cache se remplit progressivement un peu partout sur terre :slight_smile:

Pourquoi je fais ça?

En gros pour ceux qui ne savent pas, Google commence à mesurer les “Core Web Vitals” ( https://web.dev/defining-core-web-vitals-thresholds/ ), ce sont des valeurs qui permettent d’estimer si un site est réellement rapide pour l’utilisateur final, et si il propose une bonne expérience (pas un site dégeu avec le contenu qui se décale en permanence à cause d’images qui chargent, de la pub, etc…)

Google utilise ces mesures pour influencer la position du site dans Google, il est donc crucial d’avoir un site rapide.

Les Web Vitals du site Gladys (gladysassistant.com) sont excellente (normal, c’est un site entièrement statique et déployé sur un CDN - Cloudflare), mais les Web vitals du forum sont pas toujours folles, car le forum n’est pas statique, et hébergé sur un serveur central chez Hetzner.

Voilà ce que je vois de mon côté dans Cloudflare (j’utilise leur tool pour mesurer les web vitals chez les utilisateurs finaux):

Comme on peut le voir, dans 18% des cas c’est mauvais ! Il s’agit principalement de navigateurs mobiles quand ça va pas (les gens qui consultent le forum dans le métro sur leur tel par exemple).

Du coup il faut améliorer ces chiffres pour ces utilisateurs!

Une des pistes, c’était d’ajouter un CDN au forum, j’ai utilisé BunnyCDN qui est un CDN “Pull”, c’est à dire que le forum remplace toutes les URLs de contenu statique par le domaine du CDN, et le CDN va:

  • A la première requête, aller taper dans l’origin
  • Puis cacher le fichier pour toutes les prochaines requêtes

Ainsi, ça permet de délester le forum des requêtes des assets, et aussi ça permet à l’utilisateur de charger tout le contenu statique depuis un serveur proche de lui :slight_smile:

Cloudflare me fournit aussi la liste des appels de fichiers qui sont parfois lent, et sans surprise: c’est des images :slight_smile: Le CDN va faire tout son boulot ici pour ces fichiers.

Maintenant il me reste un truc à faire que je n’ai pas fais, il faut que je “regénère” tous les posts du forum pour remplacer l’URL des images dans les posts par l’URL du CDN (je n’avais pas vu qu’il fallait le faire soit même :p).

Je vous tiendrais au courant ici de l’évolution des web vitals du forum suite à ces changements !

Petite question du coup, vous en tant qu’utilisateur le forum semble rapide/ou pas au quotidien?

@VonOx @AlexTrovato @lmilcent @terdious vous qui êtes pas mal actif, je suis preneur de tout retour de votre expérience du forum :smiley:

Il l’est de mon côté

1 Like

J’ai une latence hier au 1er refresh de la page, mais après ça, je n’ai rien remarqué.

1 Like

Pour ma part c’est pareil, c’est suffisamment fluide pour avoir une bonne expérience, que ce soit sur mobile ou sur PC, en sachant que je n’ai que de la connexion 4G souvent mauvaise.
Si tu as besoin des fichiers *.har, je peux te les envoyer par mail, j ai fais la page d’accueil et la page Latest Français.
Comme @AlexTrovato, il arrive que la page d’accueil mette un peu plus de temps après un effacement du cache (entre 5 et 10s) mais je mets vraiment ça sur le compte de ma connexion !!

1 Like

Ok merci pour vos retours !

@Terdious pas la peine, j’ai déjà beaucoup de mesures via les analytics Cloudflare, je vais surveiller l’évolution :slight_smile:

Je posterais ici l’évolution dans les prochaines semaines.

En sachant que côté console Google search j’ai aussi une note assez moyenne pour le forum, que j’espère voir évoluer vers le haut avec ces changements :slightly_smiling_face:

De mon côté j’ai jamais eu de problème de latence, je n’ai donc pas remarqué de changement particulier. :sweat_smile:
Mais c’est plutôt une bonne nouvelle au final !

1 Like

Pour information, je vais lancer la re-génération de tous les posts avec les images via le CDN, ça va prendre un petit moment (une quinzaine de minutes je pense), et le forum sera peut-être un peu ralenti pendant ce temps :slight_smile:

Hier j’ai juste fais passer tous les assets statiques (JS/CSS/icones) + les images des nouveaux posts, et maintenant ce sera aussi les images des posts précédemment écrit !

En fait j’ai l’impression que les problèmes sont plutôt pour certains utilisateurs qui trouvent le forum via Google, et qui atterrissent sur un post à rallonge bien lourd avec des tonnes de photos.

Exemple: le tutoriel “Flasher un Sonoff” sur le forum est super bien référencé sur Google et drive pas mal de traffic vers le forum tous les jours :smiley: Sauf que les utilisateurs arrivent comme ça de nul part, n’ont rien en cache local, et doivent charger toutes les images (y compris les icônes, css, js).

Donc le faire via un CDN proche d’eux permet d’accélérer pour ces gens les temps de chargement.

ça bosse !!

1 Like

haha c’est pas moi qui bosse !! :stuck_out_tongue:

2 Likes

25% de la re-génération!

Screenshot 2021-10-09 at 15.06.58

1 Like

Bon par contre en fait ça créé une tâche par post sur le forum dans Sidekiq (le gestionnaire de tâches en arrière plan qu’utilise Discourse), sachant qu’il y a 49k posts sur le forum, il va falloir dépiler la queue maintenant :joy:

ça va prendre un petit temps, mais bon c’est comme ça :slight_smile: (et la queue est en “ultra low priority” donc ça bloque pas l’exécution normale du forum)

OK je comprends mieux les notifs system sur discourse

1 Like

Salut à tous,
Il y longtemps, j’avais émis cette demande :

Un lien vers le forum serait aussi intéressant car en effet, on passe toujours par un moteur de recherche pour y aller, Qwant pour moi.

Bonne remarque, désolé j’ai du zapper cette demande !

Pourtant il y en a un !

Screenshot 2021-10-10 at 11.38.33

1 Like