Vous souhaitez utiliser un CDN pour accélérer l’accès mondial aux actifs courants sur votre forum Discourse ? Vous voudrez peut-être opter pour une solution complète et consulter Set up file and image uploads to S3 (voir aussi Configure an S3 compatible object storage provider for uploads).
Si vous souhaitez un CDN sans la complexité supplémentaire d’S3 et d’avoir deux CDN, ce guide est pour vous. Le CDN réduira une partie de la charge sur votre serveur en permettant au CDN de servir ces actifs afin que le serveur n’ait pas à le faire. Il peut également accélérer les choses en livrant les fichiers depuis un emplacement plus proche de l’utilisateur final.
Inscrivez-vous auprès du CDN de votre choix – CDCK/discourse.org a utilisé et recommande fortement Fastly.
La configuration ressemblera à ceci :

Ce que vous recherchez se résume à trois paramètres principaux :
-
L’adresse d’origine, qui est l’URL où votre forum est actuellement situé
discourse.example.com. C’est à partir de là que le CDN tirera tout son contenu original lors de la première requête. -
Le CNAME, qui est le nom « convivial » pour votre CDN que vous configurerez dans votre DNS, par exemple
discourse-cdn.example.com -
L’URL du CDN, qui est le nom « peu convivial » de l’endroit d’où proviendront les actifs CDN mis en cache via le réseau mondial de serveurs distribués du CDN. Il ressemblera à
637763234.cdn-provider.com
Vous devrez modifier votre DNS pour mapper le CNAME à l’URL du CDN, comme ceci :
discourse-cdn.example.com IN CNAME 637763234.cdn-provider.com
(Une fois que vous avez modifié le DNS, laissez un peu de temps pour la propagation.)
La partie configuration de Discourse est assez simple. Décommentez la ligne CDN dans votre app.yml et mettez à jour avec le CNAME que vous venez de configurer dans votre DNS :
## L'adresse CDN http ou https pour cette instance Discourse (configurée pour tirer)
DISCOURSE_CDN_URL: https://discourse-cdn.example.com
L’URL du CDN doit inclure un protocole (https:// ou http://). Les URL relatives au protocole (commençant par //) ne sont plus prises en charge et provoqueront l’arrêt de la construction du conteneur.
(Si vous ne voyez pas cette ligne dans votre app.yml, ajoutez-la sous les autres variables DISCOURSE_)
Comme pour toutes les autres modifications de votre app.yml, vous devez reconstruire le conteneur pour refléter les changements :
./launcher rebuild app
Une fois la reconstruction terminée, naviguez vers votre instance Discourse dans le navigateur. Affichez la source et recherchez « cdn ». Vous verrez que les actifs du site proviennent désormais de votre CDN :
<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>
Ce sujet couvre le scénario le plus courant d’accélération des actifs statiques. Consultez ce sujet pour l’accélération CDN du site complet (actifs dynamiques et statiques) (comme celui fourni par Cloudflare). Cloudflare fonctionne différemment d’un CDN traditionnel, ce n’est donc pas un bon sujet pour discuter de Cloudflare.
Autres CDN signalés comme fonctionnant incluent :
- https://www.keycdn.com/ (CDCK depuis les débuts)
- MaxCDN (@sam : « CDN fiable » Jan 2017)
- StackPath (@Victor_Ashiedu Juin 2022)
- Bunny.net (@pfaffman 2023)
- Cloudfront (@pfaffman pense que CDCK en utilise au moins pour les actifs S3)
- gcore.com ? (@pfaffman s’est inscrit, mais n’a pas testé Avril 2023)