有没有一种标准方法可以在Heroku Cedar上的Rails 3.2中提供预先压缩的资产?

时间:2012-03-21 20:40:37

标签: ruby heroku gzip asset-pipeline ruby-on-rails-3.2

我有一个Rails 3.2应用程序,我正在Heroku Cedar堆栈上部署。这意味着应用程序本身负责提供其静态资产。我想要对这些资产进行gzip压缩,因此我在Rack::Deflater中的中间件堆栈中插入了production.rb

middleware.insert_after('Rack::Cache', Rack::Deflater)

...而curl告诉我,这与广告宣传的一样。

然而,由于Heroku将尽一切努力运行rake assets:precompile,生成一堆预先压缩的资产,我非常想使用它们(而不是让Rack::Deflater做所有的再次工作)。我已经看到了使用nginx(没有在Heroku上使用)和CDN(不想使用CDN)的配方,但是我还没有看到任何可以单独运行的东西。我hacked together a rack middleware要做到这一点,但我想知道这是否是最佳方式呢?

1 个答案:

答案 0 :(得分:2)

由于deflater是在机架缓存之后,因此deflator只需要完成一次工作,然后压缩资产将从机架缓存提供(假设缓存足够大,以便它们不会偶尔被淘汰) )。

那就是说,你的中间件看起来很酷,你应该把它变成一个宝石和博客,也许这将是人们开始使用的: - )