Então os arquivos não serão sincronizados com meu sistema, o CloudFront apenas os armazena em cache. Estou correto?
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.
É possível usar regras do Cloudflare para armazenar em cache ativos estáticos, como CSS e JavaScript?
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:
Obrigado pela resposta.
Já adicionei a segunda e a terceira regra, mas não entendi a primeira. Qual é a necessidade do redirecionamento 301??
Você não precisa disso; está na descrição.
Obrigado pela resposta. E quanto aos ativos estáticos, como CSS e JavaScript? É possível criar alguma regra para CSS e JavaScript??
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.
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.
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?
Acabei de usar o StackPath com sucesso como CDN. Funciona como esperado!
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.
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.
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.
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…
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.
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?
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.
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.
Ah, que bom. Obrigado por me avisar. Pensei que seria o suficiente para você encontrar. Que bom que conseguiu.