2015-04-07 13 views
9

Próbuję zoptymalizować moją aplikację rails 4, udostępniając zasoby GZipped zamiast zwykłych skompilowanych zasobów. kompresji GZip został opisany w rozdziale 4.1.2tego prowadnicami: http://guides.rubyonrails.org/asset_pipeline.htmlRails 4.2 Aplikacja nie obsługuje zasobów Gzipped

szyn atutem rurociąg rzeczywiście produkowane gzipped wersje moich aktywów po ich pre-kompilacji, i widzę je na moim serwerze plików w moim publiczny folder aplikacji.

Jednak podczas sprawdzania aktywności sieci moje strony internetowe powracają do udostępniania nieskompresowanych zasobów zamiast wersji gzipped. To doprowadziło mnie do przekonania, że ​​mój serwer sieciowy nie jest poprawnie skonfigurowany do obsługi zasobów gzipped. Używam NGINX i modułu pasażera przed aplikacją mojej szyny.

ja najpierw spróbował użyć zalecanych konfiguracji nginx w przewodniku Rails aktywami Pipeline przez dodanie następujących do mojego pliku config:

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

I następnie dwukrotnie sprawdzić, czy rzeczywiście http_gzip_static_module został skompilowany z mojej instalacji Nginx :

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

przy konfiguracji nginx zaktualizowane, a potwierdzenie http_gzip_static_module jest w instalacji, to wtedy grał o z config.serve_static_files opcja w moim production.rb pliku:

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

Te trzy ustawienia wszystko spowodowało mój serwer spada z powrotem do regularnych aktywów skompresowanych.

Wreszcie, próbowałem zainstalować klejnot z szafą-zipy (https://github.com/eliotsykes/rack-zippy) - który priorytetowo obsługuje statyczne spakowane zasoby i wraca do zwykłych skompresowanych zasobów. To też nie zadziałało, co prawdopodobnie oznacza, że ​​moja konfiguracja wymaga modyfikacji NGINX.

Każda pomoc doceniona!

Odpowiedz

2

Ta odpowiedź rozwiązać go dla mnie: https://stackoverflow.com/a/40824720/667335

mi brakuje to w 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) 
Powiązane problemy