Habilitar uma CDN para o seu Discourse

Então os arquivos não serão sincronizados com meu sistema, o CloudFront apenas os armazena em cache. Estou correto?

3 curtidas

Sim. Isso está correto. A CDN busca do seu site apenas os ativos solicitados.

O Discourse enviará para o S3 ativos estáticos (como CSS e JavaScript), bem como uploads.

4 curtidas

É possível usar regras do Cloudflare para armazenar em cache ativos estáticos, como CSS e JavaScript?

2 curtidas

Sim, usamos dessa forma e funciona bem. Apenas tenha muito cuidado ao desabilitar qualquer otimização de JavaScript. Você pode ver nossa configuração aqui:

4 curtidas

Obrigado pela resposta.

Já adicionei a segunda e a terceira regra, mas não entendi a primeira. Qual é a necessidade do redirecionamento 301??

2 curtidas

Você não precisa disso; está na descrição.

3 curtidas

Obrigado pela resposta. E quanto aos ativos estáticos, como CSS e JavaScript? É possível criar alguma regra para CSS e JavaScript??

2 curtidas

Eu não testei isso. Não tenho certeza de que funcionaria. No mínimo, você teria que limpar o cache do Cloudflare após cada rebuild.

2 curtidas

Para mim, está tudo bem em limpar o cache após cada rebuild. O que mais poderia dar errado se eu criar uma regra para armazenar em cache tudo em https://myforum.com/assets/? Isso de alguma forma afetará o login do usuário? Se você der um ok, vou testar por uma semana e relatar. Ainda tenho uma regra não utilizada.

2 curtidas

Só para esclarecer: é correto que não utilizamos este campo (assim como a URL do CDN) se estivermos usando o CDN da Cloudflare?

Configurei o arquivo cloudflare.template no app.yml conforme a documentação.

É necessária alguma configuração adicional ao usar a Cloudflare?

1 curtida

Acabei de usar o StackPath com sucesso como CDN. Funciona como esperado!

2 curtidas

Ainda é o caso hoje em dia?

De 2019:

Parece que temos que ter cuidado extra e que perdemos alguns dos benefícios do Cloudflare.

De 2020:

De 2021:

Então, o Cloudflare é confiável e eficiente com o Discourse hoje? Desativar o recurso “Rocket Loader” minimiza os benefícios?

Eu estava pensando em mudar do Stackpath para o Bunny CDN, mas o proprietário do domínio do meu fórum e ex-administrador tem uma conta Cloudflare Enterprise (ele é o proprietário do tinyURL, aliás) na qual ele poderia adicionar o domínio gratuitamente (Looking for a decrease in the forum fees in the future - #6 by Gilby - Forum Feedback - Unicyclist.com).

Então, eu me pergunto se é correto, indolor e eficaz usar o Cloudflare em vez do Bunny CDN.

2 curtidas

Se você tem muitas imagens, o que você gastará em SSDs de conexão direta será muito mais caro do que os custos equivalentes do S3.

O S3 precisa de uma CDN na frente dele para ser econômico, pois você é cobrado por entrada e saída, mas ainda é muito mais barato do que simplesmente adicionar mais SSDs de alta velocidade. O CloudFlare pode ficar na frente do S3, mas o cache de ativos é realmente o único recurso que você pode usar de forma confiável. Colocar o CloudFlare entre o cliente e o servidor de aplicativos também aumentará o número de saltos e elevará a latência do aplicativo. Não é uma solução mágica.

2 curtidas

Não temos muitas imagens. O objetivo do CDN seria fazer com que os ativos carregassem rapidamente para todos os usuários, já que nossa comunidade é internacional (principalmente EUA e Europa).

Usamos S3, mas apenas para armazenar backups.

1 curtida

Pergunta rápida. É obrigatório um “rebake” após mudarmos nossa CDN? Ou é apenas se o URL da CDN for diferente? Ou não é necessário?


editar: ou é simplesmente possível substituir os URLs antigos nas postagens cozidas pelos novos com um script rails?

Por exemplo, se eu tiver uma postagem contendo:

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

Eu poderia fazer uma busca e substituição de strings de f5i4i8k5.stackpathcdn.com para newcdn.unicyclist.com sem quebrar nada? Parece seguro, mas quero ter certeza do que estou fazendo.

Não me importo de fazer o “rebake” de todas as minhas postagens, mas o problema que enfrentei da primeira vez é que tenho milhares de vídeos do YouTube incorporados, e meu IP foi colocado na lista negra pelo YouTube durante o “rebake” devido a muitas solicitações ao YouTube.

Portanto, se houver uma alternativa segura além de fazer o “rebake” de todas as postagens e enfrentar o mesmo problema irritante, prefiro optar pela alternativa…

3 curtidas

Existe uma tarefa rake que fará uma substituição. Acho que executá-la é seguro e uma boa ideia. Substituir uma string em todos os posts é o que você procura, eu acho.

2 curtidas

Olá Jay,

Não tenho certeza sobre o uso da tarefa rake.
Os URLs da CDN parecem estar presentes nos campos cooked em vez dos campos raw (a menos que a mensagem tenha sido enviada por e-mail).
Pelo que entendi, post:remap procura a string apenas no campo raw.

Se substituir os URLs da CDN nos campos raw e cooked for seguro, acho que deveria usar um script rails personalizado?

2 curtidas

Você está certo. Há outra . . . coisa . . . que substituirá uma string em todos os campos do banco de dados. É essa que você está procurando. Desculpe, mas não consigo encontrá-la agora. Existem alguns tópicos sobre a migração de um s3, mas não parece haver um howto.

2 curtidas

Obrigado por esta dica!

Acho que é isto?

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

Encontrado em Rebaking old posts won't pull new S3 CDN URL after S3 bucket rename - #10 by Brad_Wood

E usado aqui:

Se for uma alternativa segura a um rebake ao alterar o nosso serviço de CDN, um howto seria realmente bom.

3 curtidas

Ah, que bom. Obrigado por me avisar. Pensei que seria o suficiente para você encontrar. Que bom que conseguiu.

3 curtidas