Sie möchten also ein CDN verwenden, um den weltweiten Zugriff auf gängige Assets in Ihrem Discourse-Forum zu beschleunigen? Möglicherweise möchten Sie alles auf einmal erledigen und Set up file and image uploads to S3 (siehe auch Configure an S3 compatible object storage provider for uploads).
Wenn Sie ein CDN ohne die zusätzliche Komplexität von S3 und die Nutzung von zwei CDNs wünschen, ist dies der richtige Leitfaden für Sie. Das CDN reduziert die Last auf Ihrem Server, indem es dem CDN ermöglicht, diese Assets bereitzustellen, sodass der Server dies nicht tun muss. Es kann auch die Geschwindigkeit erhöhen, indem die Dateien von einem Standort geliefert werden, der näher am Endbenutzer liegt.
Registrieren Sie sich bei dem CDN Ihrer Wahl – CDCK/discourse.org hat Fastly genutzt und empfiehlt es nachdrücklich.
Die Konfiguration wird in etwa so aussehen:

Sie suchen nach drei Haupteinstellungen:
-
Die Origin-Adresse (Ursprungsadresse), d. h. die URL, unter der sich Ihr Forum derzeit befindet, z. B.
discourse.example.com. Von hier aus zieht das CDN bei der ersten Anforderung alle ursprünglichen Inhalte. -
Der CNAME, d. h. der „freundliche“ Name für Ihr CDN, den Sie in Ihren DNS-Einstellungen festlegen, z. B.
discourse-cdn.example.com -
Die CDN-URL, d. h. der „unfreundliche“ Name für den Ort, von dem die zwischengespeicherten CDN-Assets über das weltweite Netzwerk verteilter Server des CDN stammen. Er wird wie
637763234.cdn-provider.comaussehen.
Sie müssen Ihre DNS-Einträge bearbeiten, um den CNAME der CDN-URL zuzuordnen, wie folgt:
discourse-cdn.example.com IN CNAME 637763234.cdn-provider.com
(Nachdem Sie die DNS-Einträge bearbeitet haben, geben Sie ihm etwas Zeit, um sich zu verbreiten.)
Der eigentliche Discourse-Teil der Einrichtung ist recht einfach. Kommentieren Sie die CDN-Zeile in Ihrer app.yml aus und aktualisieren Sie sie mit dem CNAME, den Sie gerade in Ihren DNS-Einstellungen festgelegt haben:
## Die http oder https CDN-Adresse für diese Discourse-Instanz (für das Abrufen konfiguriert)
DISCOURSE_CDN_URL: https://discourse-cdn.example.com
Die CDN-URL muss ein Protokoll enthalten (https:// oder http://). Protokoll-relative URLs (beginnend mit //) werden nicht mehr unterstützt und führen zum Abbruch des Container-Builds.
(Wenn Sie diese Zeile in Ihrer app.yml nicht sehen, fügen Sie sie unter den anderen DISCOURSE_-Variablen hinzu.)
Wie bei allen anderen Änderungen an Ihrer app.yml müssen Sie den Container neu erstellen, um die Änderungen zu übernehmen:
./launcher rebuild app
Sobald Sie neu erstellt haben, rufen Sie Ihre Discourse-Instanz im Browser auf. Zeigen Sie den Quellcode an und suchen Sie nach „cdn“. Sie werden sehen, dass Website-Assets nun von Ihrem CDN stammen:
<script src="https://discourse-cdn.codinghorror.com/assets/preload_store-4ea79c2f435becca86ac97a9c038f9c7.js"></script>
<script src="https://discourse-cdn.codinghorror.com/assets/locales/en-7084a68855205a9128245d2d0ce94ed9.js"></script>
Dieses Thema behandelt das häufigere Szenario der Beschleunigung statischer Assets. Siehe dieses Thema für die Beschleunigung der gesamten Website (sowohl dynamische als auch statische Assets) über ein CDN (wie es von Cloudflare bereitgestellt wird). Cloudflare funktioniert anders als ein herkömmliches CDN, daher ist dies kein geeignetes Thema für die Diskussion von Cloudflare.
Andere CDNs, die Berichten zufolge funktionieren, umfassen:
- https://www.keycdn.com/ (CDCK aus den Anfangstagen)
- MaxCDN (@sam: „zuverlässiges CDN“ Jan. 2017)
- StackPath (@Victor_Ashiedu Juni 2022)
- Bunny.net (@pfaffman 2023)
- Cloudfront (@pfaffman glaubt, dass CDCK sie zumindest für S3-Assets verwendet)
- gcore.com? (@pfaffman hat sich registriert, aber nicht getestet April 2023)