2012-01-08 37 views
2

我注意到,當serve_static_assets設置爲false時,heroku在Cedar注入一個rails3_serve_static_assets中間件。我在這發現的所有內容都是this init script,它與Heroku部署中提及的名稱相匹配,並且所有這些都重新啓用了靜態資產的提供。Heroku Cedar - Static Assets - Rails 3.0.x

我試圖找到Heroku如何提供這些資源的更多信息,因爲它們似乎不是直接來自Rails應用程序。

當我看一個js文件的標題,例如,他們是這個樣子:

Age:0 
Connection:close 
Content-Encoding:gzip 
Content-Type:text/css 
Date:Sun, 08 Jan 2012 19:04:05 GMT 
Last-Modified:Sat, 07 Jan 2012 23:43:30 GMT 
Server:nginx/0.7.67 
Transfer-Encoding:Identity 
Via:1.1 varnish 
X-Varnish:677359987 

我假設Via:1.1 varnish意味着這些資產正在通過光油送達,但the online documentation。在這件事上說,雪松沒有Varnish。

的對gzip壓縮的響應(底部)Cedar docs指出:

由於雪松的應用程序要求會直接傳送到應用服務器 - 通過像nginx的HTTP服務器不代理 - 反應的任何壓縮必須做在你的應用中。

但是我們可以清楚地看到資產是根據Content-Encoding來gzip的。現在我相當確定 Rails 3.0.x沒有啓用Rack::Deflater(它不會在rake middleware中出現),所以我對這個資源是如何被gzip的有點困惑。

這是不大不小的預光標到my next question關於通過的Cloudfront服務這些資產,但在這裏,我的問題是:

有人能解釋到底是什麼在雪松再次發生:靜態資產。也就是說,服務我的資產(Rails,Ngnix,Varnish ??)和gzip'ng他們是什麼?

回答

3

如果您在標題中看到Varnish,這意味着您的域名CNAME指向了proxy.heroku.com,而不是proxy.herokuapp.com - Cedar上沒有Varnish,但是如果您遇到問題,則會看到標題使用proxy.heroku.com,它會工作,但它只是一個通過。他們將由nginx提供服務。

+0

實際上,我們的應用指向了heroku域的A記錄,但是,只需閱讀他們的文檔,他們就會建議您使用CNAME。我會試試看。 – brad 2012-01-09 14:33:52

+1

我會讀我的同事 - http://neilmiddleton.com/the-dangers-of-a-records-and-heroku/ – 2012-01-09 14:35:22

+0

優秀,thx非常多 – brad 2012-01-09 17:18:18

0

用於Bamboo和Cedar堆棧的堆棧是相同的,除了一個區別,即Cedar上的清漆緩存不是「活動」的。這是由於Cedar支持流式處理,這是Varnish不支持的。

因此,您的資產即將來自您的Rails流程。使用Rails 3.0,這些顯然只是普通的舊文件。如果您在Rails 3.1上使用Asset pipeline,rake assets:precompile進程會爲您生成gzipped版本的文件並提供這些文件。

相關問題