2011-12-16 25 views
0

私はHerokuのCedarスタックでRails 3.0.9アプリケーションを実行しており、S3に静的資産を提供しています。私はこれをtrueに変更した場合、それはより速く、キャッシュされたコンテンツを提供します、またはであるように私はそれを残す必要がありますS3から静的資産を提供

config.serve_static_assets = false 

:私のproduction.rbファイルでは、コンフィギュレーションセットがにありましたか?

答えて

0

レールガイドから:

config.serve_static_assets静的な資産を提供するためにレール自体を構成します。デフォルトはtrueですが、アプリケーションを実行するために使用されるサーバーソフトウェア(NginxやApacheなど)は静的資産を代わりに提供するため、本番環境ではオフになります。デフォルト設定とは異なり、WEBrickを使用して実行中(絶対におすすめしません!)またはプロダクションモードでアプリをテストするときはtrueに設定してください。さもなければあなたはページのキャッシュを使用できなくなり、パブリックディレクトリの下に定期的に存在するファイルのリクエストがあなたのRailsアプリケーションに衝突します。

これが役に立ちます。

+0

(および記録のために、Herokuのは、nginxのを使用して、あなたはそれを見るために傾向がない)、私はこれをtrueに残しておきます。ありがとう – Simpleton

+0

間違っている、私の答えを参照してください。 –

5

Rafalからの回答は厳密に正しいわけではありません。本質的には、アプリケーションで実行するために選択したRailsのバージョンとスタックの種類によって異なります。 Railsのスタック上3.0 Herokuの実行シンのプロセスの前に座っているニスキャッシュがあると

。これにより、静的アセットがキャッシュされ、アプリケーションにぶつかることなく返されます。

Rails 3.0Cedarスタックにはワニスキャッシュがありません。したがって、静的であるかどうかにかかわらず、すべての要求がRailsプロセスに当てられます。レールによる

シーダー Herokuの上にある必要があります3.1は、スラグのコンパイルプロセスの一部としてrake assets:precompileを実行しようとします。これが何らかの理由で失敗した場合、実行時に静的資産がコンパイルされて提供されることを意味するコードがスラッグに挿入されます。

このに関して特に有効であるのdevの中央上のRails 3.1文書があります:あなたは正しい設定を探しているならhttp://devcenter.heroku.com/articles/cdn-asset-host-rails31

だから、心の中でこれを負担するが。しかし、それを実行する前に、Herokuはデプロイメントを行うときに適切に見えるようにこの設定を変更することに注意してください。そのため、スラッグのコンパイル中にあなたが置いた設定はすべて上書きされます。したがって、あなたがここに入れたものは本当に問題ではありません。

は、Herokuのは、nginxのまたはApacheなどのWebサーバーを使用していないことを考えると

関連する問題