Activer un CDN pour votre Discourse

Donc les fichiers ne se synchroniseront pas avec mon système, CloudFront se contente de les mettre en cache. Est-ce exact ?

3 « J'aime »

Oui, c’est exact. Le CDN récupère sur votre site uniquement les ressources demandées.

Discourse enverra également sur S3 les ressources statiques (comme les fichiers CSS et JavaScript) ainsi que les fichiers téléchargés.

4 « J'aime »

Est-il possible d’utiliser les règles Cloudflare pour mettre en cache des ressources statiques comme le CSS et le JavaScript ?

2 « J'aime »

Oui, nous l’utilisons ainsi et cela fonctionne bien. Faites simplement très attention à désactiver toutes les optimisations JavaScript. Vous pouvez voir notre configuration ici :

4 « J'aime »

Merci pour votre réponse.

J’ai déjà ajouté la deuxième et la troisième règle, mais je ne comprends pas la première. À quoi sert une redirection 301 ?

2 « J'aime »

Vous n’en avez pas besoin ; il est dans la description.

3 « J'aime »

Merci pour votre réponse. Qu’en est-il des ressources statiques comme le CSS et le JavaScript ? Existe-t-il une règle applicable au CSS et au JavaScript ?

2 « J'aime »

Je n’ai pas testé cela. Je ne suis pas sûr que cela fonctionne. Dans le meilleur des cas, vous devrez vider votre cache Cloudflare après chaque reconstruction.

2 « J'aime »

Pour moi, c’est acceptable de vider le cache après chaque reconstruction. Qu’est-ce qui pourrait encore mal tourner si j’établis une règle pour mettre en cache tout ce qui se trouve dans https://myforum.com/assets/ ? Cela affectera-t-il la connexion des utilisateurs ? Si vous donnez votre accord, je testerai cela pendant une semaine et vous ferai un rapport. Il me reste encore une règle inutilisée.

2 « J'aime »

Pour préciser, est-il exact que nous n’utilisons pas ce champ (ainsi que l’URL du CDN) si nous utilisons le CDN Cloudflare ?

J’ai configuré cloudflare.template dans app.yml conformément à la documentation.

Une configuration supplémentaire est-elle nécessaire si l’on utilise Cloudflare ?

1 « J'aime »

J’ai utilisé StackPath avec succès comme CDN. Ça fonctionne comme prévu !

2 « J'aime »

Est-ce toujours le cas aujourd’hui ?

Depuis 2019 :

Il semble que nous devions être très prudents et que nous perdions certains des avantages de Cloudflare.

Depuis 2020 :

Depuis 2021 :

Alors, Cloudflare est-il fiable et efficace avec Discourse aujourd’hui ? Désactiver la fonctionnalité “Rocket Loader” minimise-t-il les avantages ?

Je pensais passer de Stackpath à Bunny CDN, mais le propriétaire de mon domaine de forum et ancien administrateur possède un compte Cloudflare entreprise (il est le propriétaire de tinyURL d’ailleurs) sur lequel il pourrait ajouter le domaine gratuitement (Looking for a decrease in the forum fees in the future - #6 by Gilby - Forum Feedback - Unicyclist.com).

Alors, je me demande s’il est juste, sans douleur et efficace d’utiliser Cloudflare à la place de Bunny CDN.

2 « J'aime »

Si vous manipulez beaucoup d’images, ce que vous dépenserez en SSD directement attachés sera beaucoup plus coûteux que les coûts S3 équivalents.

S3 a besoin d’un CDN devant lui pour être rentable car vous êtes facturé à l’entrée et à la sortie, mais c’est toujours beaucoup moins cher que de simplement ajouter plus de SSD haute vitesse. CloudFlare peut se placer devant S3, mais la mise en cache des actifs est vraiment la seule fonctionnalité que vous pouvez utiliser de manière fiable. Placer CloudFlare entre le client et le serveur d’application augmentera également le nombre de sauts et augmentera la latence de l’application. Ce n’est pas une solution miracle.

2 « J'aime »

Nous ne sommes pas lourds en images. L’objectif du CDN serait que les actifs se chargent rapidement pour chaque utilisateur, car notre communauté est internationale (principalement aux États-Unis et en Europe).

Nous utilisons S3, mais uniquement pour stocker des sauvegardes.

1 « J'aime »

Question rapide. Un nouveau “bake” est-il obligatoire après avoir changé notre CDN ? Ou est-ce seulement si l’URL du CDN est différente ? Ou n’est-ce pas nécessaire du tout ?


edit : ou est-il simplement possible de remplacer les anciennes URL dans les posts “cooked” par les nouvelles avec un script rails ?

Par exemple, si j’ai un post contenant :

<img class="ytp-thumbnail-image"
src="https://f5i4i8k5.stackpathcdn.com/uploads/default/original/3X/f/3/f3bc5ab19cc0394f33fd008e90ca06e081886a0b.jpeg"
title="Riding a unicycle part 76: Sullivan Canyon - Los Angeles"
width="480"
height="360"
loading="lazy"
style="aspect-ratio: 480 / 360;"
>

Pourrais-je faire une recherche et remplacer les chaînes de f5i4i8k5.stackpathcdn.com par newcdn.unicyclist.com sans rien casser ? Cela semble sûr, mais je veux être sûr de ce que je fais.

Cela ne me dérange pas de refaire un “bake” de tous mes posts, mais le problème que j’ai rencontré la première fois est que j’ai des milliers de vidéos youtube intégrées, et mon IP a été mise sur liste noire par Youtube pendant le “bake” à cause de trop de requêtes vers Youtube.

Donc, s’il existe une alternative sûre au “bake” de tous les posts et à l’affrontement du même problème ennuyeux, je préférerais opter pour l’alternative…

3 « J'aime »

Il existe une tâche de râteau qui effectuera un remplacement. Je pense que l’exécution est sûre et une bonne idée. Remplacer une chaîne dans tous les articles est ce que vous recherchez, je pense.

2 « J'aime »

Salut Jay,

Je ne suis pas sûr de l’utilisation de la tâche rake.
Les URL du CDN semblent être présentes dans les champs cooked plutôt que dans les champs raw (sauf si le message a été envoyé par e-mail).

D’après ce que je comprends, post:remap recherche la chaîne de caractères uniquement dans le champ raw.

Si remplacer les URL du CDN dans les champs raw et cooked est sûr, je suppose que je devrais opter pour un script Rails personnalisé ?

2 « J'aime »

Vous avez raison. Il y a une autre . . . chose . . . qui remplacera une chaîne dans tous les champs de la base de données. C’est celle que vous cherchez. Désolé, mais je ne la trouve pas pour le moment. Il y a des sujets sur le passage d’un s3 à un autre, mais il ne semble pas y avoir de howto.

2 « J'aime »

Merci pour cet indice !

Je suppose que c’est ça ?

DbHelper.remap('from', 'to')

Trouvé sur Rebaking old posts won't pull new S3 CDN URL after S3 bucket rename - #10 by Brad_Wood

Et utilisé ici :

Si c’est une alternative sûre à un “rebake” lors du changement de notre service CDN, un howto pourrait en effet être utile.

3 « J'aime »

Oh hourra. Merci de me le faire savoir. Je pensais que cela suffirait pour que vous le trouviez. Heureux que vous l’ayez trouvé.

3 « J'aime »