Rails 4.2 App que não atende a ativos gzipados

9

Estou tentando otimizar meu aplicativo rails 4 servindo ativos GZipped em vez de ativos compilados regularmente. A compactação GZip é descrita na seção 4.1.2 deste guia do Rails: link

O pipeline de recursos de trilhos de fato produziu versões gzipadas de meus ativos depois de pré-compilá-las, e eu posso vê-las no sistema de arquivos do meu servidor na pasta pública do meu aplicativo.

No entanto, minhas páginas da web voltam a exibir os recursos não compactados em vez da versão gzipped ao inspecionar a atividade da rede. Isso me levou a pensar que meu servidor da web não está configurado corretamente para atender aos ativos gzipados. Estou usando o NGINX e o módulo de passageiro na frente do meu aplicativo de trilhos.

Em primeiro lugar, tentei usar a configuração NGINX recomendada no guia Pipeline de recursos do Rails, adicionando o seguinte ao meu arquivo de configuração:

location ~ ^/(assets)/  {
  root /path/to/public;
  gzip_static on; # to serve pre-gzipped version
  expires max;
  add_header Cache-Control public;
}

Eu verifiquei duas vezes que o http_gzip_static_module foi de fato compilado com a instalação do NGINX:

/opt/nginx/sbin/nginx -V    # --with-http_gzip_static_module

Com a configuração do NGINX atualizada e a confirmação de que o http_gzip_static_module está na minha instalação, então eu joguei com a opção config.serve_static_files no meu arquivo production.rb :

config.serve_static_files = true
config.serve_static_files = false
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?

Essas três configurações resultaram em meu servidor voltando aos ativos compactados regulares.

Por fim, tentei instalar a gem do rack-zippy ( link ) - que prioriza a exibição dos ativos e quedas gapsped estáticos de volta para os ativos compactados regulares de outra forma. Isso também não funcionou, o que provavelmente significa que minha configuração do NGINX precisa ser corrigida.

Qualquer ajuda muito apreciada!

    
por weasel 07.04.2015 в 23:17
fonte

2 respostas

2

Esta resposta resolveu para mim: link

Eu estava faltando isso em config / production.rb

config.middleware.insert_before(Rack::Sendfile, Rack::Deflater)

# Compress JavaScripts and CSS.
config.assets.compress = true
config.assets.js_compressor = Uglifier.new(mangle: false)
    
por Allen 28.12.2016 / 01:00
fonte
0

Parece que a Sprockets não faz mais isso por você. Parece que isso foi respondido em falta da versão gzip dos recursos css e js .

    
por Aaron Lasseigne 26.05.2015 / 05:52
fonte