11

Rails 3.1中是否有可用的資源或方法,可以自動將資產上傳到亞馬遜雲端,並使用這些資源而不是服務本地託管的資產?我想手動上傳編譯的資產很容易,然後更改rails應用配置以使用該資產主機,但是當資產被修改時,上傳到雲端將需要再次手動完成。有什麼好辦法呢?將Rails 3自動資產部署到Amazon CloudFront?

回答

8

看看https://github.com/rumblelabs/asset_sync - 我們只是使用S3,但我猜想一旦資產在S3上,CloudFront部分就非常簡單。

它最終只是您在部署過程中添加的一個rake任務。

1

另一個選項是https://github.com/moocode/asset_id,自述文件中有一個示例可以將其用於cloudfront。 它應該使用rails 3.1,但我只在3.0.x上使用它。

Ss John表示,所有解決方案最終都會成爲一個rake任務+一點邏輯來改變rails中的資產路徑。

10

如果您使用Cloudfronts「Custom origin」選項,則不需要上傳任何內容,Cloudfront將在需要時從您的服務器獲取資產。對於這一設置見的細節:

http://blog.ertesvag.no/post/10720082458

+0

...和使用彈性青苗的,因爲你的資產在默認情況下有可能預編譯, nginx服務器將把它們提供給cloudfront,所以這種方法應該沒有什麼後果(該請求從未擊中rails應用程序)。 – kross

13

絕對退房asset_sync在GitHub上。或者我們的Heroku開發中心文章Using a CDN asset Host with Rails 3.1 on Heroku

有相當多使用asset_sync Vs的CDN定製的起源,讓你的應用程序編譯懶洋洋資產生產或服務於他們直接預編譯了你的應用服務器一個大的性能提升。但是我會這麼說。我寫的。

  • 隨着asset_sync和S3可以預編譯的資產意味着所有資產都是有準備的資產主機上送達/ CDN立即
  • 只能要求:資產在預編譯application.rb中束,在生產中節省內存
  • 您的應用服務器絕不會出現資產請求。你知道,你可以花費昂貴的計算時間。計算。
  • 最佳實踐HTTP緩存頭都默認爲
  • 設置您可以啓用自動gzip壓縮有一個額外的配置
+0

你知道爲什麼HTTP緩存標題不會被默認設置的原因嗎?他們現在是否必須在asset_sync配置文件中手動設置?像config.custom_headers = {'Cache-Control'=>'max-age = 315576000','Expires'=> 1.year.from_now.httpdate}我似乎無法讓我設置任何...任何幫助表示讚賞 – Richlewis