Sto usando Rails 4.2 per un progetto abbastanza semplice. Quando eseguo lo rake assets:precompile
(per gli ambienti di sviluppo e di produzione) ottengo un file application-xyz.js
e application-xyz.css
in pubblico/risorse. Ma non ci saranno versioni gzip create, cioè non application-xyz.js.gz
e non application-xyz.css.gz
. Non sono a conoscenza di alcuna opzione per disabilitare questa funzione. Mi sono perso qualcosa?manca la versione gzip delle risorse css e js
risposta
I pignoni 3 non generano più versioni compresse con gzip. Secondo this issue è in gran parte perché sono stati usati raramente realmente.
È possibile riportare questa funzionalità gzipping beni stessi dopo precompilazione, per esempio, questo example capistrano task di Xavier Noria utilizza find
per iterare su tutto il file CSS e JS nella cartella attivi e quindi utilizza xargs
passarli a gzip
:
namespace :deploy do
# It is important that we execute this after :normalize_assets because
# ngx_http_gzip_static_module recommends that compressed and uncompressed
# variants have the same mtime. Note that gzip(1) sets the mtime of the
# compressed file after the original one automatically.
after :normalize_assets, :gzip_assets do
on release_roles(fetch(:assets_roles)) do
assets_path = release_path.join('public', fetch(:assets_prefix))
within assets_path do
execute :find, ". \\(-name '*.js' -o -name '*.css' \\) -exec test ! -e {}.gz \\; -print0 | xargs -r -P8 -0 gzip --keep --best --quiet"
end
end
end
end
preferisco
namespace :assets do
desc "Create .gz versions of assets"
task :gzip => :environment do
zip_types = /\.(?:css|html|js|otf|svg|txt|xml)$/
public_assets = File.join(
Rails.root,
"public",
Rails.application.config.assets.prefix)
Dir["#{public_assets}/**/*"].each do |f|
next unless f =~ zip_types
mtime = File.mtime(f)
gz_file = "#{f}.gz"
next if File.exist?(gz_file) && File.mtime(gz_file) >= mtime
File.open(gz_file, "wb") do |dest|
gz = Zlib::GzipWriter.new(dest, Zlib::BEST_COMPRESSION)
gz.mtime = mtime.to_i
IO.copy_stream(open(f), gz)
gz.close
end
File.utime(mtime, mtime, gz_file)
end
end
# Hook into existing assets:precompile task
Rake::Task["assets:precompile"].enhance do
Rake::Task["assets:gzip"].invoke
end
end
A partire da Sprockets 3.5.2, la compressione gzip è di nuovo abilitata e le risorse gz vengono generate. Devi configurare il tuo server per servirli correttamente. Per Nginx:
location ~ ^/(assets)/ {
gzip_static on;
}
Poi nel application.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)
Questo ha funzionato per me. Vale la pena notare che è necessario disabilitare "Disabilita cache" in Chrome Dev Tools almeno una volta prima di ricaricarlo affinché la modifica abbia effetto e vedere gzip nella colonna Codifica contenuto. – Allen
- 1. Disabilitare temporaneamente risorse js/css
- 2. Node.js, Express e css, js, risorse immagine
- 3. Compressione CSS/JS GZip con Asp.Net
- 4. PHP - Invio gzip JS compressi/CSS
- 5. Riferimento a gzip CSS e JS compressi in HTML/JSP
- 6. Rails 3.2 + Heroku + S3 + CloudFront: non serve gzip css js
- 7. Conflitto di Heroku tra risorse gzip e risorse precompilate
- 8. Come ridurre e versione js/css su Google App Engine?
- 9. Wicket e risorse CSS
- 10. Best practice per gestire tutti i caching delle risorse (immagini, css, js, tutto)
- 11. Come servire risorse gzip da Amazon S3
- 12. Dove mettere favicon per prendere in considerazione la versione delle risorse JSF?
- 13. Configurazione di Shiro per consentire l'accesso anonimo alle cartelle delle risorse (JS, CSS ecc.)
- 14. Abilita GZIP per i file CSS e JS sul server NGINX per Magento
- 15. Convenzione di denominazione per le risorse (immagini, css, js)?
- 16. Symfony 2 - Utilizzo delle risorse
- 17. Inline vs incluso js e css?
- 18. JS, Immagini e CSS intercettati da HTTPModule
- 19. drupal: tanti file js e css?
- 20. Ne vale la pena gzip di file js?
- 21. applicazione IIS manca Content-Encoding - gzip nell'intestazione di risposta
- 22. come ottenere la versione css
- 23. Angular JS: carica dinamicamente file CSS e JS
- 24. Abilita il caching dei file css e js in Apache
- 25. Heroku Cedro e nginx (gzip)
- 26. Thymeleaf e statico delle risorse con l'impronta digitale
- 27. JSF 2.0 Come collegare i CSS dalla cartella delle risorse
- 28. Caching di immagini, JS e CSS in Apache utilizzando deflate
- 29. Impostazioni Rails config.assets.precompile per elaborare tutti i file CSS e JS in app/risorse
- 30. Perché le persone minificano css e javascript, quando abbiamo gzip?
Quale versione di pignoni stai usando (controllare Gemfile.lock)? –
E 'solo la dipendenza delle rotaie 4.2.1: pignoni 3.0.1, rocchetti di trascinamento-rotaie 2.2.4 – ding280