从S3提供静态资产

Sim*_*ton 0 ruby-on-rails heroku amazon-s3 ruby-on-rails-3

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

config.serve_static_assets = false
Run Code Online (Sandbox Code Playgroud)

如果我将其更改为true,它是否会更快地提供缓存内容,还是应该保留原样?

Nei*_*ton 5

Rafal的答案并不完全正确,因为它基本上归结为您选择在应用程序中运行的堆栈和Rails版本.

使用Bamboo堆栈上的Rails 3.0,有一个Varnish缓存,它位于Heroku运行的Thin进程之前.这会缓存任何静态资产并返回它们而不会触及您的应用程序.

使用Cedar堆栈上的Rails 3.0,没有Varnish缓存.因此,无论它们是否是静态的,所有请求都将命中您的Rails进程.

使用Rails 3.1应该在Cedar Heroku上尝试运行一个rake assets:precompileslug编译过程的一部分.如果由于任何原因失败,它将向您的slug中注入一些代码,这意味着静态资产在运行时被编译和提供.

开发中心有一个Rails 3.1文档,对此特别有用:http: //devcenter.heroku.com/articles/cdn-asset-host-rails31

所以,如果你正在寻找正确的设置,请牢记这一点.但是,在执行此操作之前,请注意Heroku将在您进行部署时根据自己的需要更改此设置,因此在slug编译期间,您放入的任何设置都将被覆盖.因此,你在这里放什么并不重要.

(并且为了记录,He​​roku使用Nginx,你只是不倾向于看到它)