
Eu tenho um site quase todo estático rodando em Ruby on Rails que está usando o cache de proxy reverso do Varnish para economizar acessos ao back-end do Rails.
O problema é que um usuário pode fazer login no site e, quando o faz, usamos ESI (borda lateral incluída) para mostrar partes específicas da página ao usuário.
Usar ESI significa que temos que desabilitar a compactação Gzip no backend Rails (usando Nginx + passageiro) ou o verniz não poderá analisar os dados retornados do backend para executar o processamento ESI.
Minha pergunta é: os benefícios de usar um cache de proxy reverso superam os benefícios de compactar todo o seu conteúdo? Ou devo tentar me livrar completamente do ESI e ter o melhor dos dois mundos?
Responder1
Você poderia obter o melhor dos dois mundos se organizasse as coisas assim:
Usuário -> nginx -> Verniz -> Rails
Ative a compactação gzip do nginx para o usuário. Esse é o segmento mais lento e também o mais caro. Estou assumindo que suas instâncias nginx, Varnish e Rails são locais entre si. Sua largura de banda local deve ser mais que suficiente. Além disso, não faz muito sentido gzipar apenas para descompactar para montar o ESI.
Responder2
Se a largura de banda não for um problema e os tempos de carregamento forem aceitáveis sem o gzip, você definitivamente deve deixar o gzip desligado.
Gzipar consome muitos recursos da CPU. Portanto, se você está mais preocupado com a CPU do que com a largura de banda, se o site carrega rápido o suficiente e se o ESI é uma grande ajuda para você, então definitivamente o sistema de cache de proxy reverso tem mais benefícios do que compactar respostas http.
Em outras situações, onde a largura de banda é crítica, o gzip pode ser mais importante, mas não parece ser o caso aqui.
Finalmente, o gzipping pode ser feito por alguns proxies reversos. Esta é uma grande possibilidade, porque os proxies reversos geralmente não usam muita CPU (se estiverem em um servidor separado). Isso economiza muitos ciclos de CPU para o back-end e também economiza largura de banda, mas no momento, e se bem me lembro, o Varnish não suporta gzip.