Portanto, você gostaria de usar uma CDN para acelerar o acesso mundial a ativos comuns no seu fórum Discourse? Você pode querer ir com tudo e Set up file and image uploads to S3 (veja também Configure an S3 compatible object storage provider for uploads).
Se você quer uma CDN sem a complexidade adicional do S3 e ter duas CDNs, este é o guia para você. A CDN reduzirá parte da carga no seu servidor, permitindo que a CDN sirva esses ativos para que o servidor não precise fazê-lo. Ela também pode acelerar as coisas ao entregar os arquivos de um local mais próximo do usuário final.
Cadastre-se na CDN de sua escolha – CDCK/discourse.org usou e recomenda fortemente a Fastly.
A configuração será algo como isto:

O que você está procurando são três configurações principais:
-
O endereço de origem (origin address), que é o URL onde seu fórum está atualmente localizado
discourse.example.com. É daqui que a CDN buscará todo o seu conteúdo original na primeira solicitação. -
O CNAME, que é o nome “amigável” para sua CDN que você configurará no seu DNS, por exemplo,
discourse-cdn.example.com -
O URL da CDN (CDN URL), que é o nome “não amigável” de onde os ativos da CDN em cache virão através da rede mundial de servidores distribuídos da CDN. Será algo como
637763234.cdn-provider.com
Você precisará editar seu DNS para mapear o CNAME para o URL da CDN, assim:
discourse-cdn.example.com IN CNAME 637763234.cdn-provider.com
(Depois de editar o DNS, dê um tempinho para propagar.)
A parte real da configuração no Discourse é bem simples. Descomente a linha da CDN no seu app.yml e atualize-a com o CNAME que você acabou de configurar no seu DNS:
## O endereço http ou https da CDN para esta instância do Discourse (configurado para puxar)
DISCOURSE_CDN_URL: https://discourse-cdn.example.com
O URL da CDN deve incluir um protocolo (https:// ou http://). URLs relativos ao protocolo (começando com //) não são mais suportados e farão com que a compilação do contêiner seja abortada.
(Se você não vir esta linha no seu app.yml, adicione-a abaixo das outras variáveis DISCOURSE_)
Como em qualquer outra alteração no seu app.yml, você precisa reconstruir o contêiner para refletir as alterações:
./launcher rebuild app
Depois de reconstruir, navegue até sua instância do Discourse no navegador. Visualize a fonte e procure por “cdn”. Você verá que os ativos dos sites agora estão vindo da sua 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>
Este tópico cobre o cenário mais comum de aceleração de ativos estáticos. Veja este tópico para aceleração CDN de todo o site (ativos dinâmicos e estáticos) (como a fornecida pelo Cloudflare). O Cloudflare funciona de forma diferente de uma CDN tradicional, então este não é um bom tópico para discutir o Cloudflare.
Outras CDNs reportadas como funcionais incluem:
- https://www.keycdn.com/ (CDCK dos primórdios)
- MaxCDN (@sam: “CDN confiável” Jan 2017)
- StackPath (@Victor_Ashiedu Jun 2022)
- Bunny.net (@pfaffman 2023)
- Cloudfront (@pfaffman acha que o CDCK usa eles pelo menos para ativos S3)
- gcore.com? (@pfaffman se inscreveu, mas não testou Abril 2023)