2011-12-16 66 views
0

我在Heroku的Cedar堆栈上运行Rails 3.0.9应用程序,并拥有S3服务静态资产。在我production.rb文件,有一个配置设置为:从S3服务静态资产

config.serve_static_assets = false 

如果我改变了为真,将其发球更快的缓存内容,还是应该保留原样?

回答

0

从导轨导向:

config.serve_static_assets配置的Rails本身提供静态资产。默认为true,但在生产环境中关闭,因为用于运行应用程序的服务器软件(例如Nginx或Apache)应该替代静态资产。与默认设置不同,在运行时将其设置为true(绝对不推荐!)或使用WEBrick在生产模式下测试您的应用程序。否则,您将无法使用页面缓存,并且对公共目录下经常存在的文件的请求无论如何都会触发您的Rails应用。

希望这会有所帮助。

+0

考虑到Heroku的不使用Nginx的一样或Apache Web服务器,我会离开它真的。谢谢 – Simpleton 2011-12-17 10:33:13

5

Rafal的答案并不严格正确,因为它主要取决于您选择在应用程序中运行的Rails和Rails版本。

使用Rails 3.0堆栈上有一个清漆缓存它位于该Heroku的运行过程薄的前面。这将缓存所有静态资产并返回它们而不会触及您的应用程序。

With Rails 3.0 on Cedar堆栈没有Varnish缓存。因此,所有请求都将触及您的Rails进程,而不管它们是否是静态的。

使用Rails 3.1这应该是对雪松的Heroku将尝试运行rake assets:precompile作为蛞蝓编译过程的一部分。如果由于任何原因而失败,它会将一些代码注入到slug中,这意味着静态资产将在运行时进行编译和服务。

上有开发中心一个Rails 3.1文件,该文件是关于这个特别有用:http://devcenter.heroku.com/articles/cdn-asset-host-rails31

所以,如果你正在寻找正确的设置牢记这一点。但是,在这样做之前,请注意Heroku会在您进行部署时认为适合他们的设置,因此在进行部署编译期间,您所做的任何设置都会被覆盖。因此,放入这里并不重要。

(和备案,Heroku的使用Nginx的,你只是不容易看到它)