Activez un CDN pour votre Discourse

So files will not synchronise with my system, cloudfront just cache them. Am i true?

3 « J'aime »

Yes. That is correct. The CDN gets from your site just the assets that are requested of it.

Discourse will push to S3 static assets (like css and javascript) as well I uploads.

4 « J'aime »

Is it possible to use cloudflare rules to cache static assets like css and javascript?

2 « J'aime »

Yes, we use it that way and it works well. Just be very careful to disable any javascript optimizations. You can see our setup here:

4 « J'aime »

Thanks for the response.

I have already added the second and third rule but I didn’t get the first rule. What’s the need for 301 redirect??

2 « J'aime »

You don’t need it; it’s in the description.

3 « J'aime »

Thanks for the response. What about the static assets like css and javascripts? Any rule possible for css and javascript??

2 « J'aime »

I didn’t test that. I’m not sure that would work. At the very least you’d have to clear your Cloudflare cache after every rebuild.

2 « J'aime »

It’s okay with me to clear the cache after every rebuild. What else would possibly go wrong if I make a rule to cache everything in https://myforum.com/assets/ ? Will this anyway affect user login? If you give a nod, I will test it for a week and report. I still have one unused rule.

2 « J'aime »

Just to clarify, is it correct we do not use this field (as well as CDN URL) if we are using cloudflare CDN?

I have setup cloudflare.template in app.yml as per docs.

Is any further config needed if using 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 »