Ein CDN für die statischen Assets des Forums!

Hallo zusammen :slight_smile:

Kleine Nachricht, um euch zu informieren, ich habe ein CDN für die Assets des Forums (CSS/JS/Icons/Bilder) eingerichtet

Das ist simpel, aber mir ist aufgefallen, dass das Forum viele Anfragen stellt, um CSS/JS/Icons/Bilder zu laden und all diese Anfragen sind schade, wenn sie auf dem Origin und nicht auf einem CDN in der Nähe des Nutzers gemacht werden.

Einige Seiten laden viele statische Ressourcen, und es ist besser, den Backend des Forums zu entlasten, der sich auf den dynamischen Inhalt konzentrieren kann :slight_smile:

Das Ziel ist auch, die Web Vitals des Forums zu verbessern, um besser bei Google zu ranken.

(Auch für Nutzer wie mich in Asien verbessert sich die Ladezeit deutlich :innocent: )

Um das umzusetzen, bietet Discourse eine vorkonfigurierte Lösung, die ich wirklich einfach eingerichtet habe. Ich habe Bunny CDN als CDN verwendet.

Bisher funktioniert alles, aber falls ihr Ladefehler bemerkt, lasst es mich wissen :slight_smile:

Gute Idee!
Bis jetzt, läuft alles gut…

Erstes kleines Problem (ups), da der CDN den Forum mit der gleichen IP kontaktiert (es handelt sich um einen CDN vom Typ „Pull“, daher muss der Cache „warm up“), blockiert das interne Rate-Limit des Forums (Nginx) den CDN gelegentlich mit 429 Too Many Requests.

Bisher ist es nicht allzu oft passiert, aber ich habe einige davon gesehen:

Ich starte das Forum mit dem Fix neu!

Bin non, 18 Uhr, ist es immer noch nicht angekommen… :sweat_smile:

Der Cache füllt sich allmählich überall auf der Welt :slight_smile:

Warum mache ich das?

Für alle, die es nicht wissen, Google beginnt, die « Core Web Vitals » zu messen (Comment les seuils des métriques Core Web Vitals ont été définis  |  Articles  |  web.dev), das sind Werte, die es ermöglichen, abzuschätzen, ob eine Website für den Endnutzer tatsächlich schnell ist und ob sie ein gutes Erlebnis bietet (keine hässliche Website, bei der sich der Inhalt ständig verschiebt, weil Bilder geladen werden, Werbung usw.).

Google verwendet diese Messungen, um die Position der Website in Google zu beeinflussen, daher ist es entscheidend, eine schnelle Website zu haben.

Die Web Vitals der Gladys-Website (gladysassistant.com) sind ausgezeichnet (normal, es ist eine vollständig statische Website und auf einem CDN - Cloudflare - bereitgestellt), aber die Web Vitals des Forums sind nicht immer toll, da das Forum nicht statisch ist und auf einem zentralen Server bei Hetzner gehostet wird.

Hier ist, was ich auf meiner Seite in Cloudflare sehe (ich verwende ihr Tool, um die Web Vitals bei den Endnutzern zu messen):

Wie man sieht, ist es in 18% der Fälle schlecht! Es handelt sich hauptsächlich um mobile Browser, wenn es nicht klappt (z. B. Menschen, die das Forum in der U-Bahn auf ihrem Handy nutzen).

Daher müssen wir diese Zahlen für diese Nutzer verbessern!

Eine der Ideen war, dem Forum ein CDN hinzuzufügen, ich habe BunnyCDN verwendet, das ein « Pull »-CDN ist, d. h. das Forum ersetzt alle URLs statischer Inhalte durch die Domäne des CDN, und das CDN:

  • Geht bei der ersten Anfrage zum Origin
  • Dann zwischenspeichert die Datei für alle folgenden Anfragen

Dadurch wird das Forum von Anfragen nach Assets entlastet, und es ermöglicht dem Nutzer auch, alle statischen Inhalte von einem Server in seiner Nähe zu laden :slight_smile:

Cloudflare liefert mir auch die Liste der Dateianrufe, die manchmal langsam sind, und ohne Überraschung: Es sind Bilder :slight_smile: Das CDN wird hier seine ganze Arbeit für diese Dateien leisten.

Jetzt gibt es noch etwas, das ich nicht gemacht habe, ich muss alle Beiträge des Forums « neu generieren », um die URL der Bilder in den Beiträgen durch die URL des CDN zu ersetzen (ich wusste nicht, dass man das selbst machen muss :p).

Ich werde euch hier über die Entwicklung der Web Vitals des Forums nach diesen Änderungen auf dem Laufenden halten!

Kleine Frage: Wie empfindet ihr als Nutzer das Forum? Schnell oder nicht so schnell im Alltag?

@VonOx @AlexTrovato @lmilcent @terdious, ihr, die ihr recht aktiv seid, ich bin für jede Rückmeldung zu euren Erfahrungen mit dem Forum offen :smiley:

Er ist auf meiner Seite

Ich habe hier beim ersten Seitenaufruf eine Latenz, aber danach habe ich nichts bemerkt.

Für mich ist es ähnlich, es ist flüssig genug, um eine gute Erfahrung zu haben, sei es auf dem Handy oder auf dem PC, wobei ich oft nur eine schlechte 4G-Verbindung habe.
Falls du die *.har-Dateien brauchst, kann ich sie dir per E-Mail schicken, ich habe die Startseite und die Seite „Aktuelles Französisch“ gemacht.
Wie @AlexTrovato kommt es vor, dass die Startseite nach einem Cache-Löschen etwas länger braucht (zwischen 5 und 10 Sekunden), aber ich schiebe das wirklich auf meine Verbindung!!

Ok, danke für euer Feedback!

@Terdious, nicht nötig, ich habe bereits viele Metriken über die Cloudflare-Analytics, ich werde die Entwicklung im Auge behalten :slight_smile:

Ich werde hier in den nächsten Wochen die Entwicklung posten.

Wobei ich auch in der Google-Search-Konsole eine eher mittelmäßige Bewertung für das Forum habe, die ich hoffentlich mit diesen Änderungen nach oben verbessern kann :slightly_smiling_face:

Ich hatte meinerseits nie Latenzprobleme, daher habe ich keine besonderen Veränderungen bemerkt. :sweat_smile:
Aber im Endeffekt ist das eher eine gute Nachricht!

Zur Information werde ich die Neugenerierung aller Beiträge mit den Bildern über das CDN starten, das wird etwas dauern (ich denke etwa 15 Minuten), und das Forum könnte in dieser Zeit etwas langsamer sein :slight_smile:

Gestern habe ich nur die statischen Assets (JS/CSS/Icons) + die Bilder der neuen Beiträge umgestellt, und jetzt werden auch die Bilder der bereits geschriebenen Beiträge folgen!

Tatsächlich scheint es, dass die Probleme eher bei bestimmten Nutzern auftreten, die das Forum über Google finden und auf einen sehr langen Beitrag mit massenhaft Fotos landen.

Beispiel: Der Tutorial « Flasher ein Sonoff » auf dem Forum ist super gut bei Google referenziert und bringt jeden Tag viel Traffic zum Forum :smiley: Aber die Nutzer kommen so aus dem Nichts, haben nichts im lokalen Cache und müssen alle Bilder laden (einschließlich Icons, CSS, JS).

Daher ermöglicht das CDN in ihrer Nähe, die Ladezeiten für diese Leute zu beschleunigen.

Das läuft super!!

haha ich bin das nicht, der arbeitet !! :stuck_out_tongue:

25% der Nachwuchsgeneration!

Screenshot 2021-10-09 at 15.06.58

Gut, aber es erstellt eine Aufgabe pro Forenbeitrag in Sidekiq (dem Hintergrundaufgaben-Manager, den Discourse verwendet). Da es 49.000 Beiträge im Forum gibt, müssen wir jetzt die Warteschlange abarbeiten :joy:

Das wird etwas dauern, aber so ist es nun mal :slight_smile: (und die Warteschlange hat « ultra low priority », also blockiert sie nicht die normale Ausführung des Forums)

OK, ich verstehe die Systembenachrichtigungen auf Discourse besser.

Hallo zusammen,
Vor langer Zeit habe ich diesen Wunsch geäußert:

Ein Link zum Forum wäre auch interessant, denn man kommt immer über eine Suchmaschine dorthin, bei mir Qwant.

Guter Hinweis, Entschuldigung, ich habe diese Anfrage wohl übersehen!

Dabei gibt es einen!