2015-04-07 16 views
9

Sto cercando di ottimizzare la mia applicazione di rails 4 servendo asset GZipped invece di risorse compilate regolarmente. la compressione gzip è descritta nella sezione 4.1.2 di questa guide: http://guides.rubyonrails.org/asset_pipeline.htmlRails 4.2 App non al servizio di asset compressi

i binari del risparmio gasdotto ha infatti prodotto versioni gzippati dei miei beni dopo di loro pre-compilazione, e posso vedere questi sul filesystem del mio server nel mio cartella pubblica dell'app.

Tuttavia, le mie pagine Web ricadono per servire le risorse non compresse anziché la versione gzip durante l'ispezione dell'attività di rete. Ciò mi ha portato a pensare che il mio server web non sia configurato correttamente per servire le risorse gzip. Sto usando NGINX e il modulo passeggero davanti alla mia app per i binari.

ho innanzitutto provato con la configurazione consigliata Nginx nella guida Rails Asset Pipeline aggiungendo quanto segue al mio file di configurazione:

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

Poi ho ricontrollato che la http_gzip_static_module è stato effettivamente compilato con la mia installazione di Nginx :

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

con la configurazione di Nginx aggiornato, e la conferma che http_gzip_static_module è nella mia installazione, ho poi giocato in giro con le config.serve_static_files opzione nella mia production.rb di file:

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

Queste tre impostazioni tutta provocato il mio server ricadere al patrimonio compressi regolari.

Infine, ho provato a installare la gemma rack-zippy (https://github.com/eliotsykes/rack-zippy), che dà la priorità al servizio delle risorse gzip statiche e ricade negli asset compressi regolari altrimenti. Anche questo non ha funzionato, il che probabilmente significa che la mia configurazione NGINX ha bisogno di modifiche.

Qualsiasi aiuto molto apprezzato!

risposta

2

Questa risposta ha risolto per me: https://stackoverflow.com/a/40824720/667335

mi mancava questo in 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)