Accelerazione CDN completa del sito per Discourse

I have a question concerning CDN technology.

Am I right that cdn can only cache the files in my site and can’t cache hotlinked files from another site?

I store catalogue files (mps and pictures) on another server and hotlink them on my Discourse site. Am I right that such files won’t be cached by cdn? Is there a way to cache the hotlinked files too?

Unless you tell discourse not to, it will pull those remote images to its own image store. The below assumes you turned that off.

You should put that site behind CDN and then share the CDN url to discourse.

If you put a CDN in front of your image site but share the origin url to discourse, You can use a built in feature to replace the origin url with the CDN url .

2 Mi Piace

Am I right, that if I activate the CDN feature in Discourse and switch off saving the origin to Discourse, the cdn service will cache these external files and Discourse will replace all the links to files hotlinked from another site?

I doubt that can caches external files hotlinked from other sites. Can anybody approve it?

FYI - I’ve posted a new thread on how to setup full site CDN acceleration (and SSL termination) using AWS Cloudfront here (link below). There be dragons here - so tread lightly.

1 Mi Piace

È ancora necessario quando si verifica l’errore Reason: CORS header ‘Access-Control-Allow-Origin’ missing?

Non riesco a trovare nulla che utilizzi quella variabile su Github:


Modifica: il commento delle impostazioni dice ancora che è necessario e funziona dopo averlo aggiunto. Quindi accetterò :slight_smile:

Al giorno d’oggi, nel 2023, queste quattro regole devono ancora essere seguite rigorosamente? Ad esempio, se dovessi usare Akamai, progettato per far accelerare il nome di dominio principale con la sua CDN. Qualcuno ha una configurazione distillata delle regole seguenti, ad esempio se il message bus e il long polling debbano ancora essere richiesti all’origine? Dove dovrebbero andare queste impostazioni? L’URL di base del long polling sembra essere stato rimosso dalla dashboard di amministrazione?

2 Mi Piace

Ci sono alcune impostazioni avanzate che consentono di inviare richieste Message Bus da un dominio diverso. È molto complesso, tuttavia.

1 Mi Piace

Quindi “long polling base url” deve essere impostato tramite la console di Rails. Poiché è stato rimosso dalla dashboard di amministrazione. Devo essermi perso il motivo pubblicato in precedenza per cui è stato rimosso se l’impostazione è ancora necessaria per far funzionare bene il sito in modalità CDN a sito intero.

Allo stesso modo, DISCOURSE_ENABLE_CORS: true deve essere impostato in app.yml.

Dovresti impostarlo con una variabile d’ambiente (DISCOURSE_LONG_POLLING_BASE_URL) nel tuo app.yml. È nascosto perché pochissime persone devono impostarlo e si presume che se lo stai facendo tu sappia cosa stai facendo.

1 Mi Piace

Grazie, @pfaffman! Avrei dovuto sapere che tutte queste variabili in maiuscolo dovrebbero andare in app.yml.
Quindi, quali casi d’uso del message-bus avranno effetto? Ad esempio, una risposta a un post che causa una notifica, ecc.? Farei un test dei casi d’uso per verificare se il message-bus sul mio sito funziona come previsto senza che venga impostato DISCOURSE_LONG_POLLING_BASE_URL.

Ciao,
“long polling base url” è stato rimosso dalla dashboard di amministrazione? O questa impostazione può essere fatta tramite la console Rails?

long_polling_base_url è un’impostazione del sito nascosta, ma può essere impostata dalla console rails se non si utilizza una variabile d’ambiente in app.yml:

3 Mi Piace

Questa lista fornisce sicuramente maggiori approfondimenti su Discourse.
Ho configurato la CDN con il mio sito web, ha raggiunto le cache edge, tuttavia non ho riscontrato problemi con il message-bus con le sue intestazioni di risposta, ma non mi sento ancora sicuro. Né ho impostato le impostazioni CORS.

Cache-Control: must-revalidate, private, max-age=0

Ciao,
Ho postato la mia domanda in un altro thread Full Site CDN Using AWS CloudFront - #2 by Hyan. Ho fatto la stessa configurazione e ho lasciato #DISCOURSE_CDN_URL: https://discourse-cdn.example.com invariato. Posso impostarlo allo stesso URL del sito web? Ad esempio, http://forum.example.com. Altrimenti, ci saranno URL di asset in percorso relativo senza nome di dominio.
Apprezzerei se @sam o @pfaffman potessero darmi un suggerimento.

Non consiglio di usare Cloudflare come CDN. Alcune persone lo fanno. Forse possono aiutare.

EDIT: Oh, scusa. Questo è “CDN per l’intero sito…” Forse non dovrei contribuire qui.

No, uso Akamai CDN, che supporta la cache di contenuti dinamici.
Dal primo post di questa discussione, sembra che dovrei impostare DISCOURSE_CDN_URL come CDN non full-site, anche se l’URL è lo stesso dell’URL del sito web. Non sono sicuro se impostarlo causi problemi al mio sito e altri risultati irreversibili, alla fine dovrò reinstallare il software da zero. In questo post Full Site CDN Using AWS CloudFront, l’autore non imposta e lascia invariato DISCOURSE_CDN_URL, e non richiede un URL separato per servire message-bus/long-polling. Ho usato questa soluzione e il mio sito web sta funzionando bene finora. L’unico svantaggio della soluzione è che ci sono molti URL relativi (nessun URL di base, poiché il valore di DISCOURSE_CDN_URL è vuoto) presenti nel sorgente della pagina, il che lo fa sembrare un sito web non di livello di produzione.

Facendo seguito alle mie domande, ho trovato un post simile a quello che sto chiedendo in questo post CloudFront not caching static files - #4 by Falco
Apprezzo la risposta di @Falco, in questa configurazione CDN per l’intero sito, posso impostare DISCOURSE_CDN_URL uguale a DISCOURSE_HOSTNAME? Poiché presumo che Full site CDN significhi che la CDN accelera l’URL dell’hostname, il che rende DISCOURSE_CDN_URL uguale a DISCOURSE_HOSTNAME. Ma qui non c’è una documentazione decente a riguardo in meta.

Ciao, c’è qualche modello per il coniglio?

Non hai bisogno di un template per questo, basta configurare bunny per recuperare dal tuo sito discourse e impostare DISCOURSE_CDN_URL all’endpoint cdn fornito da bunny in app.yml

1 Mi Piace

Ci sto provando come "accelerazione CDN" con il mio IP VPS con Bunny DNS. Funziona, ma tutti gli utenti hanno lo stesso IP.

Ho appena trovato la configurazione, si chiama "X-Real-Ip".