Home

Awesome

heroku_rails_deflate

The Heroku Cedar stack is not fronted by an asset server such as Varnish or nginx, and there is no automatic provision for using gzip compression for HTTP transfers. At the same time, the Rails 3.2 asset pipeline spends a lot of CPU cycles creating highly compressed versions of all our static assets. It would be great to use them!

This gem activates Rack::Deflate for all requests. But the real coolness is the custom middleware that checks for the .gz version of precompiled assets and serves them up for you. We also eliminate conflict with Rack::Deflate by telling it not to compress these already compressed files. We also provide a sensible default for the Cache-Control header for these files. If you are using the asset digest in the filename (and you should), there is no reason why we can't set very high max-age, so we set it to one year by default.

You should see a nice performance boost from the installation of this gem, without any additional work on your part. After you get done with this, you could take it to the next level by adding a CDN such as AWS CloudFront.

Installation

  gem 'heroku_rails_deflate', :group => :production
  config.serve_static_assets = true
  config.assets.compress = true
  config.assets.compile = true
  config.assets.digest = true
  config.static_cache_control = "public, max-age=31536000"
  RAILS_ENV=production rake assets:precompile

Contributing to heroku_rails_deflate

Thanks

This gem uses a combination of techniques from this gist by guyboltonking and romanbsd's gem heroku-deflater.

Copyright

Copyright (c) 2013 Matt Olson. See LICENSE.txt for further details.