Discourse e Cloudflare

Há muita discussão nesta comunidade sobre o uso do Cloudflare. Algumas pessoas dizem que funciona perfeitamente sem problemas e outras alertam que o céu cairá se o usarem. De qualquer forma, a maior parte dessas informações está muito desatualizada, de 2 anos a quase uma década atrás.


Pessoalmente, estou usando o Cloudflare com o Discourse aqui em 2022 sem nenhum problema.

Estou minificando/armazenando em cache todas as páginas e HTML/CSS/JS, com compressão Brotli. Apenas excluí o /admin do desempenho do Cloudflare por preferência pessoal.

Não desativei o Rocket Loader, mas ele já estava desativado por padrão. A única outra alteração que fiz foi adicionar:

- "templates/cloudflare.template.yml"

às minhas configurações do app.yml para restaurar os IPs dos usuários.

Vale também mencionar que o site funcionou bem antes mesmo de eu fazer qualquer ajuste.

7 curtidas

Contanto que você reconheça que o que está fazendo não é totalmente suportado, tudo bem.

O CloudFlare continua a ajustar suas otimizações e, às vezes, elas não causam problemas, e outras vezes podem derrubar um site. Para a maioria, a ideia de seu site quebrar sem nenhuma ação de sua parte seria bastante desagradável.

Se você já assistiu a uma reconstrução, saberá que a minificação já acontece dentro do Discourse. O CloudFlare não minifica o site melhor do que ele mesmo já faz. Você mediu o desempenho com e sem o CF ativado?

E não se esqueça que, uma vez que o aplicativo JavaScript é carregado no navegador, o CloudFlare está, na verdade, diminuindo a velocidade do seu site. Cada gota de tráfego entre o aplicativo e o servidor agora também tem que atravessar a rede CloudFlare, aumentando o número de saltos de rede e, com isso, a latência.

Mas se está funcionando para você, ótimo. Apenas certifique-se de desligá-lo antes de pedir suporte, porque ele é o primeiro (e mais provável) culpado.

10 curtidas

Tenho a sensação de que a maior parte (senão toda) do medo em usar o Cloudflare com o Discourse é baseado em problemas de anos atrás.

Tanto o Cloudflare quanto o Discourse percorreram um longo caminho na última década.

Tenho vasta experiência com problemas de cache em geral, e é verdade que, nos primórdios, o Cloudflare quebrou muitos scripts, mas ele tem se comportado muito bem há muitos anos.

Algumas das ferramentas de cache mais agressivas definitivamente quebram coisas e exigem muita otimização para fazê-las funcionar bem. Esse sentimento em geral ainda se mantém.

No entanto, você tem certeza de que a afirmação de que o Cloudflare não é suportado pelo Discourse ainda é precisa? O Discourse literalmente tem mecanismos integrados para lidar com o Cloudflare.

De qualquer forma, não, eu não fiz uma comparação antes e depois no https://gtmetrix.com/, mas para mim isso é um tanto irrelevante porque tenho outras razões para usar o Cloudflare além da velocidade, então, a menos que causasse uma diminuição drástica (ou mesmo perceptível) na velocidade, eu o usaria de qualquer maneira.

Pensamento Final: Sim, sempre que você usa uma ferramenta de CDN/cache/minificação/etc., especialmente se você for inexperiente, ela pode quebrar coisas. Isso é verdade para todos os sites, independentemente de como são construídos. Mas a ideia de que o Cloudflare tem quase a garantia de causar estragos em todos os sites Discourse parece informação desatualizada, que precisa parar de ser perpetuada.

2 curtidas

O modelo do CloudFlare não é uma adição nova e, se você dedicar um tempo para olhar o código-fonte, verá que o único propósito é obter os intervalos de IP deles e modificar o nginx para garantir que ele esteja considerando o CF-Connecting-IP como o verdadeiro endereço do cliente, que é obscurecido pelo proxy que a nuvem laranja fornece. Não é algo novo, existe há pelo menos sete anos. Você pode usar o Cloudflare para ocultar a localização do seu servidor ou atuar como um CDN barato para uploads, mas em ambos os casos, recomendamos que você desative todos os recursos de desempenho e use uma regra de página para habilitar o cache na sua pasta de uploads.

Que benefício o teste via GTMetrix demonstraria? Acho que você tem um entendimento fundamental de como o Discourse funciona para citar isso. O Discourse não é um site, é um aplicativo Javascript. Navegar pelo site não serve páginas HTML estáticas para o navegador. O aplicativo Javascript que carrega no seu navegador fala diretamente com o servidor, e é por isso que certos elementos da página não parecem recarregar entre os cliques. A agilidade desse aplicativo é determinada apenas pelos recursos do servidor e pela latência entre o cliente e o servidor. O CloudFlare não pode acelerar sua instância do Discourse, e sua presença entre os dois sistemas aumenta a latência.

O acima é baseado em anos de experiência, não em uma sensação. O Discourse ainda tem problemas periódicos com o Cloudflare. Além de obscurecer o IP do seu servidor e economizar um pouco de transferência de dados para uploads, não há nada que o Cloudflare possa fazer para acelerar um site Discourse.

5 curtidas

O template do CloudFlare não é uma novidade, e se você tiver tempo para olhar o código-fonte, verá que o único propósito é obter os intervalos de IP deles e modificar o nginx para garantir que ele esteja olhando para o CF-Connecting-IP, pois o verdadeiro endereço do cliente é obscurecido pelo proxy que a nuvem laranja fornece. Não é algo novo, existe há pelo menos sete anos. Você pode usar o Cloudflare para ocultar a localização do seu servidor, ou atuar como um CDN barato para uploads, mas em ambos os casos, recomendamos que você desative todos os recursos de desempenho e use uma regra de página para habilitar o cache na sua pasta de uploads.

Certo, meu ponto era que, se o Cloudflare fosse não suportado, eles não se dariam ao trabalho de adicionar oficialmente qualquer tipo de suporte a ele em primeiro lugar. Eles também não teriam tutoriais oficiais sobre como usá-lo. É verdade que eles podem recomendar não usá-lo por causa de X, Y e Z em alguns casos, mas isso não é o mesmo que algo ser completamente não suportado. :skull_and_crossbones:

Que benefício o teste via GTMetrix demonstraria? Acho que você tem um entendimento fundamental de como o Discourse funciona para citar isso. O Discourse não é um site, é uma aplicação Javascript. Navegar pelo site não envia páginas HTML simples para o navegador. A aplicação Javascript que carrega no seu navegador fala diretamente com o servidor, e é por isso que certos elementos da página não parecem recarregar entre os cliques. A agilidade de dita aplicação é determinada apenas pelos recursos do servidor e pela latência entre o cliente e o servidor. O CloudFlare não pode acelerar sua instância do Discourse, e sua presença entre os dois sistemas aumenta a latência.

Sim, eu entendo que o Discourse não é um site. É uma plataforma para entregar conteúdo como qualquer outra plataforma/software/CMS. Claro que o Cloudflare não pode impactar nada no nível do servidor, o que é especialmente verdadeiro para configurações LAMP. Mas, em última análise, toda plataforma tem que eventualmente entregar todo o código do lado do cliente (HTML/CSS/JS). Claro que o GTmetrix não pode analisar a velocidade do lado do servidor, mas você ainda pode obter algumas informações sobre a saída final da sua configuração. Em outras palavras, como o usuário experimenta o carregamento do conteúdo.

O Cloudflare não acelera muito um site, nem de forma tão dramática quanto otimizações do lado do servidor e melhores recursos do servidor. Concordamos totalmente nisso. Seu foco principal é a otimização de DNS. Existem alguns recursos de CDN mais avançados para contas pagas, especialmente no que diz respeito a imagens, mas eu nunca usei uma conta paga. Eu me pergunto se são alguns desses recursos avançados que levam as pessoas a ter problemas e a pedir ajuda?

O acima é baseado em anos de experiência, não em um sentimento. O Discourse ainda tem problemas periódicos com o Cloudflare. Além de obscurecer o IP do seu servidor e economizar um pouco de transferência de dados para uploads, não há nada que o Cloudflare possa fazer para acelerar um site Discourse.

Droga. Eu sabia que ia ter problemas por dizer “sentimento”, mas é apenas uma figura de linguagem. Estou falando por experiência também. :stuck_out_tongue_closed_eyes:

Eu não desafiaria o fato de que, como Líder na comunidade oficial do Discourse, você obviamente tem mais experiência com o Discourse, e claramente viu todos os tipos de problemas bizarros causados pelo Cloudflare.

Além de entrar nos detalhes de todas as nuances do Cloudflare/Discourse, eu ainda mantenho meu ponto principal, que é simplesmente que o Cloudflare não é tão assustador quanto a narrativa neste fórum faria a maioria das pessoas acreditar.

Dito isso, eu também entendo de gerenciar comunidades e, obviamente, nem todo mundo é um desenvolvedor ou mesmo experiente em tecnologia. Nesse sentido, posso ver por que ser inundado com pessoas pensando que o Discourse está quebrado quando é apenas o Cloudflare ou algo semelhante pode se tornar irritante.

3 curtidas

Esse é o ponto. “Não suportado” não significa “impossível”, mas sim “boa sorte com isso”. Uma resposta frequente para “há um bug” é “ele desaparece se você desativar o Cloudflare”?

Se você quiser acelerar as coisas, use uma CDN real - - Habilitar uma CDN para o seu Discourse

6 curtidas

Ou, sabe, se alguém quiser uma opção totalmente gratuita ou, de outra forma, quiser usar o Cloudflare, pode, sem problemas.

Você está citando uma recomendação de quase uma década atrás. As coisas mudam. Eu realmente gostaria de ver um dos desenvolvedores oficiais opinar sobre isso em 2022. Imagino que ele diria que as coisas estão muito mais estáveis e, também, qualquer recomendação sobre não mexer com JS é provavelmente a recomendação para todas as CDNs, não apenas para o Cloudflare.

Por favor, não marque membros da equipe, se eles quiserem opinar, eles o farão.

3 curtidas

???

Marquei o criador do Discourse. Podemos discutir o dia todo sobre onde o Discourse se encontra em 2022 em relação ao Cloudflare, mas até ouvirmos da fonte, é mais especulação do que uma resposta definitiva.

Como ele saberia que alguém está pedindo a opinião dele para que ele possa opinar, a menos que seja marcado?

Houve um problema na semana passada que envolvia pessoas vendo anúncios quando não deveriam, e ficou bem claro que era um problema com o Cloudflare. Desativá-lo é sempre uma das primeiras coisas a se fazer. Muitas pessoas que buscam suporte aqui são novatas e o objetivo é tornar as coisas o mais simples possível. Se funciona para você, ótimo. Se você quiser responder a vinte ou mais posts por semana que

Mas isso não é verdade. Se você usar uma CDN real, o Discourse a usará apenas para o que deve ser servido pela CDN.

Ei @JammyDodger, acho que é hora de um FAQ sobre Cloudflare (embora não seja a primeira vez que sugiro isso). Você pode pedir ao Jeff e ao Sam para opinarem.

4 curtidas

Aqui está o problema. Cache/combinação/minificação notoriamente quebra o JavaScript, independentemente do software ou combinação de CDN utilizada. Já vi esse problema comum com uma dúzia de outras ferramentas/serviços. Ao lidar com iniciantes, o cache do navegador deles por si só é uma dor constante para educá-los. Já gerenciei grandes comunidades de software antes; estou bem ciente do mesmo velho problema surgindo repetidamente.

O que estou me perguntando é, isso é realmente um problema específico da Cloudflare OU é um problema comum que todas as ferramentas de otimização têm, onde elas podem quebrar o JavaScript e acontece que, devido à popularidade da Cloudflare, esse problema geral é erroneamente confundido como um problema da Cloudflare. Essa distinção faz sentido?

Em qualquer caso, sim, eu adoraria que os desenvolvedores oficiais opinassem sobre isso e um FAQ atualizado seria muito útil. Estou recebendo muita resistência, mas não estou tentando causar problemas. É apenas frustrante que a comunidade esteja cheia de tantas contradições sobre isso; estou apenas tentando chegar ao fundo do que realmente está acontecendo em 2022.

Mas, se eu não puder, se não pudermos, tudo bem. Aproveitem o resto do fim de semana, pessoal. Vou deixar o coitado do :horse: em paz agora.

2 curtidas

Não, isso não é verdade. Vemos problemas com o Cloudflare em combinação com o Discourse com muita frequência.

Não existe tal coisa como “suportado”. Mas se você não sabe o que está fazendo, isso pode e causará problemas, e mesmo que você saiba o que está fazendo, pode ter problemas inesperados.

Os benefícios de desempenho do Cloudflare, se houver, serão pequenos. A maioria dos ativos servidos pelo Discourse são bem compactados e imutáveis (ou seja, eles são armazenados em cache pelo navegador por muito tempo). A maioria do outro conteúdo não é armazenável em cache porque são dados de aplicativos personalizados.

Dito isso, o Cloudflare pode ser muito útil para proteção contra DDoS.

5 curtidas

Isso seria bem-vindo, já que temos opiniões mistas de diferentes usuários :person_shrugging:

1 curtida

Temos um FAQ para o Cloudflare e como (não) configurá-lo para o Discourse. Ele também se aplica a instâncias auto-hospedadas.

6 curtidas

Não duvido disso, mas acho que você perdeu a distinção que eu estava tentando esclarecer. É realmente, especificamente o Cloudflare que é o problema, ou é realmente apenas o fato de que ferramentas de otimização dessa natureza podem facilmente quebrar JS em geral? E a maioria das pessoas acaba usando o Cloudflare por causa de sua popularidade, criando uma falsa confluência.

Seria como culpar o Gmail ou o GoDaddy por problemas que são inerentes a todos os serviços de e-mail ou hospedagem.

E se houvesse outra CDN mais popular que o Cloudflare, você veria o mesmo número de solicitações de suporte estranhas sobre esse serviço também.

Mesmo que você não concorde, você entende o que quero dizer?

3 curtidas

Como devemos evitar certas configurações, e usuários do meta disseram coisas como

Tudo o que o CloudFlare pode fazer por você é ocultar seu IP e atuar como um CDN para seus uploads. Os benefícios são mínimos

e

Os benefícios de desempenho do Cloudflare, se houver, serão pequenos.

Existe uma resposta definitiva e direta para a pergunta “Sem nenhuma configuração de velocidade habilitada, o Cloudflare tem algum benefício em comparação com o Bunny CDN ou Stackpath (ou qualquer CDN “regular”, suponho)?”?

Ainda estou em dúvida entre o Bunny, que diminuiria muito os custos do meu CDN atual (Stackpath), e o Cloudflare, que no meu caso seria gratuito (o proprietário do domínio pode adicionar meu fórum à sua conta empresarial).

Além disso, coisas que não entendo porque não sou experiente em tecnologia.

2 curtidas

Não se trata apenas de quebrar JS. Trata-se também de proxy e de tornar a porta 80 inacessível, quebrar o LetsEncrypt e alguns desses serviços armazenando em cache mais do que deveriam.

Como o Cloudflare é o maior desses “ferramentas de otimização dessa natureza”, e é generalizado, popular e gratuito, é aquele em torno do qual a maioria das discussões está centrada. Mas sim, você está certo. É um problema de ferramentas como essa em geral.

Então, sim, concordo.

Tópicos como esses tendem a ser um pouco perigosos por natureza, pois as pessoas (especialmente no grupo-alvo do “problema”) não tendem a ler muito bem. É como postar em um tópico sobre os perigos do abuso de drogas ou álcool e afirmar “não, pessoal, não é apenas um problema de drogas e álcool, eu uso drogas sem problemas, e não se esqueçam, pessoal: o uso excessivo de qualquer substância é perigoso”. (Sim, eu sei. Toda metáfora vai apenas até certo ponto, mas é o melhor que pude pensar).

E podemos dizer o quão perigosas as coisas são o mais alto que quisermos, mas as pessoas vão usá-las de qualquer maneira.
É por isso que fizemos um FAQ :wink:

10 curtidas

Um novo guia de Perguntas Frequentes parece uma ótima ideia. O link do Communiteq não foi muito robusto.

Aqui neste fórum, algumas pessoas estão criando regras gerais Cache Level: Bypass, Disable Performance, no entanto, elas estão permitindo que o Cloudflare armazene em cache imagens ou CSS. Eu não vi uma resposta oficial se isso é um sim ou um não…

Em vez de dizer para não usar o Cloudflare e, em seguida, lidar com casos problemáticos, talvez fosse bom apresentar o que deve e o que não deve ser feito. Então, uma referência rápida a esse post no futuro responderá a essas perguntas.

Apenas a opinião de um homem.

1 curtida

@RGJ — Obrigado! Muitas pessoas podem não ver nem entender o ponto da minha distinção ou que diferença isso faz, mas isso me traz muita clareza. Fico muito frustrado sem clareza, porque sem essa base inicial e sólida, não sei qual caminho seguir para me concentrar mais e obter uma melhor compreensão de um determinado assunto.

1 curtida

Se você tiver algum comentário específico, adoraria ouvi-lo.

Com relação ao cache, eu diria que não é um “sim” ou “não”, mas mais como um “meh”:

1 curtida