Accelerazione CDN del sito completo per Discourse

Ho una domanda riguardante la tecnologia CDN.

È corretto dire che la CDN può memorizzare nella cache solo i file del mio sito e non può memorizzare nella cache i file hotlinkati da un altro sito?

Archivio i file del catalogo (mps e immagini) su un altro server e li hotlinko sul mio sito Discourse. È corretto che tali file non vengano memorizzati nella cache dalla CDN? Esiste un modo per memorizzare nella cache anche i file hotlinkati?

A meno che non si dica a Discourse di non farlo, esso scaricherà quelle immagini remote nel proprio archivio immagini. Quanto segue presuppone che tu abbia disattivato tale funzione.

Dovresti mettere quel sito dietro una CDN e poi condividere l’URL della CDN con Discourse.

Se metti una CDN davanti al tuo sito di immagini ma condividi l’URL di origine con Discourse, puoi utilizzare una funzione integrata per sostituire l’URL di origine con l’URL della CDN.

2 Mi Piace

Ho ragione nel pensare che, se attivo la funzionalità CDN in Discourse e disattivo il salvataggio dell’origine su Discourse, il servizio CDN memorizzerà nella cache questi file esterni e Discourse sostituirà tutti i collegamenti ai file hotlinkati da un altro sito?

Dubito che possa memorizzare nella cache file esterni hotlinkati da altri siti. Qualcuno può confermarlo?

FYI - Ho pubblicato un nuovo thread su come configurare l’accelerazione CDN completa del sito (e la terminazione SSL) utilizzando AWS Cloudfront qui (link in basso). Qui ci sono draghi, quindi procedi con cautela.

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".